gpt4 book ai didi

javascript - 是否可以访问刚刚指定的属性?

转载 作者:行者123 更新时间:2023-11-28 00:54:12 26 4
gpt4 key购买 nike

我正在尝试提高我正在编写的一些代码的可读性。我将一个值数组传递给一个函数,并希望能够提取每个值。我想检查数组是否符合预期大小。

function useData(data) {
if (data.length != Data.Size) {
// ERROR
}

var name = data[Data.Indexes.NAME];
var age = data[Data.Indexes.AGE];
var weight = data[Data.Indexes.WEIGHT];
}

我想知道Data.Indexes中有多少个属性,我尝试了以下两种方法,

var Data = {
Indexes : {
NAME : 0,
AGE : 1,
WEIGHT : 2
},
Size : Objects.keys(Indexes).length // Doesn't work.
};
Data.Size2 = Object.keys(Data.Indexes).length; // Works.

我可以在数据中找到索引的大小吗?

最佳答案

您可以使 Size-property 成为一个返回索引中属性数量的函数,如下所示:

var Data = {
Indexes : {
NAME : 0,
AGE : 1,
WEIGHT : 2
},
Size : function() {return Object.keys(this.Indexes).length}
};

现在您可以在函数 useData()调用它:

function useData(data) {
if (data.length != Data.Size()) {/* ERROR */}
/* ... */
}

第二种方法使Data.Size成为getter函数。这样就可以防止被覆盖:

var Data = {
Indexes : { /* ... */ },
get Size() {return Object.keys(this.Indexes).length
};

每次引用时都会执行 getter:

function useData(data) {
if (data.length != Data.Size) {/* ERROR */}
/* ... */
}
Data.Size = 55; // nothing happens

更新:这些方法不能保护 Data.Indexes 免受更改。如果您需要的话,请查看Object.seal()Object.freeze() .

关于javascript - 是否可以访问刚刚指定的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26422022/

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