美好的一天!我有这段代码:
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]);
})();
我需要解释。我知道“方法”是一组真正的方法,只是“导出”到我们的新类(class)。但是,这是什么:MyArray.prototype.length = 0; ?作者创建新的原型(prototype)属性并将其分配为零。稍后使用这个新属性!
var mine = new MyArray();
mine.push(1, 2, 3);
assert(mine.length == 3 ...
.....
工作怎么样? “长度”在上面的代码中没有实例化!
最佳答案
它被初始化为零,这样如果你从不调用它的任何函数,它将返回零(就像一个真正的数组)而不是未定义的。它还需要从零开始,以便方法正确更新它。在您的示例中,长度为 3,因为 push 方法这样做了。
关于javascript - 模拟数组功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254124/