chu*_*lai 4 javascript console google-chrome
\n\n背景:
\n\n我试图从数组类型中提取所有原型函数。
\n\nconst arrayProto = Array.prototype \nconst arrayMethods = Object.create(arrayProto) \nRun Code Online (Sandbox Code Playgroud)\n\narrayMethods回报Array\xc2\xa0{}
我发现所有方法都是原始(浅紫色),但没有一个被计算在内。如果我更改arrayProto为像 [1,2,3] 这样的普通数组,我可以通过 arrayMethods[i] 获取数字,因为所有数字都列出在\ n我的第一个想法是浅紫色的被忽略或不知何故不属于 arrayMethods. 但是我找不到有关控制台这部分的任何文档。\n为什么以及如何解决它?
在 JavaScript 中,属性可以是可枚举的,也可以是不可枚举的。for-in 循环或 会忽略不可枚举属性Object.keys()。所有内置方法都是不可枚举的。Object.prototype(这就是为什么 for-in 没有列出每个对象的所有方法。)
Chrome 似乎使用深紫色表示可枚举属性,使用浅紫色表示不可枚举属性。它们不需要被继承。演示(Chrome 73.0.3683.103 的截图):
Object.defineProperties({}, {
foo: {enumerable: true, value: 1},
bar: {enumerable: false, value: 2},
});
Run Code Online (Sandbox Code Playgroud)
如果您想获取对象的属性,甚至包括不可枚举的属性,您可以使用Object.getOwnPropertyNames(o). 但是,如果您想查找继承的属性,则需要自己跟踪原型链。
| 归档时间: |
|
| 查看次数: |
2830 次 |
| 最近记录: |