javascript - 如何将 "size"属性添加到 Javascript 数组?

标签 javascript

要将 size() 方法添加到 Array 对象,我会这样做:

if (!Array.size) {
    Array.prototype.size = function() {
        return this.length;
    };
}

是否有一种简单的方法来定义 size property,它的工作方式与 length 类似?

(我真的不需要它,我只是想了解这是否可以用 Javascript 轻松实现。)

最佳答案

ES5这是可能的。在 Array 原型(prototype)上添加一个 size 属性,

Object.defineProperty(Array.prototype, "size", {
    get: function() {
        return this.length;
    },
    set: function(newLength) {
        this.length = newLength;
    }
});

var x = [1, 2, 3];
x.length    // 3
x.size      // 3

x.push(4);
x           // [1, 2, 3, 4]
x.length    // 4
x.size      // 4

x.length = 2;
x           // [1, 2]
x.size = 1;
x           // [1]

它基本上用作长度的包装器。肉眼看来就像一个属性,但背后有一个底层函数支持。

感谢@Matthew 的评论,这个 size 属性就像一个完整的长度包装器。

关于javascript - 如何将 "size"属性添加到 Javascript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864374/

相关文章:

Javascript 对象未将图像设置为数组

javascript - 如何从 sourcemap 中获取原始行号和符号

javascript - XMLHttpRequest.upload.addEventListener ("progress"... 不工作

javascript - 如何使用正则表达式匹配除加号之外的所有非数字字符?

javascript - 如何通过样式属性值选择字体

javascript - 在 Firebase 的函数中获取访问 firestore 数据

javascript - jQuery 和 ASP.NET 文本框

javascript - promise : Execute something regardless of resolve/reject?

javascript - 将包含键的对象插入数组

javascript - Iframe 滚动条 css