gpt4 book ai didi

javascript - 这些(Javascript 对象)方法来自哪里?

转载 作者:行者123 更新时间:2023-11-29 21:09:00 25 4
gpt4 key购买 nike

我有一个 Javascript 对象(它恰好是 CloudKit 库中的 database 对象,但这并不重要)。根据 How to get all properties values of a Javascript Object (without knowing the keys)?我尝试了以下方法来列出该对象的键:

console.log(Object.keys(database))
console.log(Object.getOwnPropertyNames(database))
console.log(Reflect.ownKeys(database))

他们都记录:

[ '_container', '_isPublic', '_partition' ]

(编辑:我还尝试使用 for/in 循环,它也记录了上述内容。)

但是,我知道这个对象也有 performQuerysaveRecords 方法,如果我专门记录它们,我可以看到它们:

console.log(database.performQuery)
// logs [Function: value]
console.log(database.saveRecords);
// logs [Function: value]

谁能解释我如何获得该对象的所有键的列表,包括“ secret ”方法?

最佳答案

javascript 中 for/in 的一个臭名昭著的问题是它会获取继承的属性。 (因此 .hasOwnProperty()。)所以你可以做这样的事情来获取所有属性,无论是否继承:

function(target) {
var results = [];
for(var key in target) {
results.push(key);
}
return results;
}

我从你的问题中学到了很多。谢谢。

这是我们计算出的代码:

function scanProperties(obj){
var results = [];
while(obj) {
results = results.concat(Object.getOwnPropertyNames(obj));
obj = Object.getPrototypeOf(obj);
}
return results;
}

基本上沿着继承链向上走,在进行时获取属性名称。可以通过消除出现的重复名称来改进。 (由于不同“类别”的对象可能具有某些相同的属性,因此只有“最接近”的属性适用于我们开始的对象。)

关于javascript - 这些(Javascript 对象)方法来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42602879/

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