javascript - 模拟数组功能

标签 javascript

美好的一天!我有这段代码:

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/

相关文章:

javascript - IBM Watson 语音转文本 JavaScript SDK : how to get messages?

javascript - 查看源书签 : Retrieve original source?

javascript - 基于选择的 Angular 动态验证

javascript - 对 div 内 2 列文章中的元素应用相同的高度

javascript - 如何在实际 body 负荷之前显示加载图像?

javascript - 如何在 XML 中搜索特定属性以检索另一个属性?

javascript - 返回元素的 html 以及 jquery 中的元素

javascript - 无法在react.js中的模板字符串中渲染html标签

javascript - 将 JSON 图层添加到 Leaflet map

javascript - Ajax 响应中的尾随空格