Chrome 控制台中的浅紫色是什么意思?

chu*_*lai 4 javascript console google-chrome

浅紫色和紫色有什么区别?\n谢谢。\n在此输入图像描述

\n\n

背景:

\n\n

我试图从数组类型中提取所有原型函数。

\n\n
const arrayProto = Array.prototype \nconst arrayMethods = Object.create(arrayProto) \n
Run Code Online (Sandbox Code Playgroud)\n\n

arrayMethods回报Array\xc2\xa0{}

\n\n

我发现所有方法都是原始(浅紫色),但没有一个被计算在内。如果我更改arrayProto为像 [1,2,3] 这样的普通数组,我可以通过 arrayMethods[i] 获取数字,因为所有数字都列出在\ n我的第一个想法是浅紫色的被忽略或不知何故不属于 arrayMethods. 但是我找不到有关控制台这部分的任何文档。\n为什么以及如何解决它?

\n

Kev*_*eid 6

在 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 次

最近记录:

6 年,6 月 前