美好的一天!我有这个代码:模拟阵列功能
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