gpt4 book ai didi

javascript - 显示 javascript 原型(prototype)链

转载 作者:行者123 更新时间:2023-11-30 12:18:20 26 4
gpt4 key购买 nike

我想查看原型(prototype)链中的项目列表有办法知道吗?我尝试使用 getOwnPropertyNames,但它不显示原型(prototype)链

function Grid(width, height) {
this.width = width;
this.height = height;
}
Grid.prototype.example = function() {console.log("hello");}

console.log(Object.getOwnPropertyNames(new Grid()));
//["width", "length"]

为什么不显示,有什么方法可以显示吗?

当属性从另一个构造函数继承时,当我使用 getOwnPropertyNames 时,我也有一个奇怪的错误

function Grid(width, height) {
this.space = new Array(width * height);
this.width = width;
this.height = height;
}

console.log(Object.getOwnPropertyNames(new Grid()));
//it gives me these errors
Uncaught RangeError: Invalid array length
at new Grid (<anonymous>:3:20)
at <anonymous>:2:40
at Object.InjectedScript._evaluateOn (<anonymous>:905:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:838:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)

这是为什么?

最佳答案

我想最简单的方法是使用 for 循环:

for (var prop in obj) {
console.log(prop);
}

如果您想获取所有属性,而不仅仅是可枚举的属性,您可以结合使用Object.getOwnPropertyNamesObject.getPrototypeOf。 :

function getPropertyNames(obj) {
return obj ?
Object.getOwnPropertyNames(obj)
.concat(getPropertyNames(Object.getPrototypeOf(obj))) :
[];
}

注意:此列表可以包含重复项。

关于javascript - 显示 javascript 原型(prototype)链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31769195/

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