美好的一天!我有這個代碼:模擬陣列功能
function MyArray() {}
MyArray.prototype.length = 0;
(function() {
var methods = ['push', 'pop', 'shift', 'unshift',
'slice', 'splice', 'join'];
for (var i = 0; i < methods.length; i++) (function(name) {
MyArray.prototype[ name ] = function() {
return Array.prototype[ name ].apply(this, arguments);
};
})(methods[i]);
})();
我需要解釋。我明白「方法」是一組真正的方法,它們只是「輸出」到我們的新班級中。但是,這是什麼:MyArray.prototype.length = 0; ?作者創建新的原型屬性並將其賦值爲零。然後使用這個新的屬性!
var mine = new MyArray();
mine.push(1, 2, 3);
assert(mine.length == 3 ...
.....
它是如何工作的? 「長度」沒有在上面的代碼中實例化!
*你是什麼意思*實例化*?你可以實例化對象,但這只是一個原始的... – Kiruse
對不起,我的意思是實現。 「長度」屬性沒有任何實現。只分配一個零。 – user2972298
'length'在方法內部使用。它是數組派生的正確功能所必需的。嘗試刪除聲明,看看會發生什麼。你可能會得到一個錯誤,或者可能是不可預知的行爲。 – Kiruse