gpt4 book ai didi

javascript - 自定义对象原型(prototype)方法变成数组循环中的索引

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:29 26 4
gpt4 key购买 nike

这里有些奇怪。我已经为 object 定义了一个名为 getSize 的自定义原型(prototype)方法:

if (!Object.prototype.getSize) {
Object.prototype.getSize = function() {
var size = 0, key;
for (key in this) {
if (this.hasOwnProperty(key)) size++;
}
return size;
};
}

它为您提供对象的大小。到目前为止很简单,对吧?这是我感到困惑的地方:

var l = ["foo", "bar"]
for (var i in l) {
console.log(i);
}

结果是:

0
1
getSize

为什么 getSize 在那里???

编辑我知道 javascript 中的数组也是对象。我的问题是为什么这个方法变成了一个索引,而不是保留一个方法。这对我来说没有任何意义......

最佳答案

因为 getSize 是一个可枚举的属性,你可以将它定义为不可枚举的:

Object.defineProperty(Object.prototype, 'getSize', {
enumerable: false,
value: function() {
var size = 0, key;
for (key in this) {
if (this.hasOwnProperty(key)) size++;
}
return size;
}
});

但你也可以这样做:

Object.keys(object).length;

关于javascript - 自定义对象原型(prototype)方法变成数组循环中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com