首页 > 解决方案 > Chrome 控制台中的浅紫色是什么意思?

问题描述

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

背景:

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

const arrayProto = Array.prototype 
const arrayMethods = Object.create(arrayProto) 

arrayMethods返回Array {}

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

标签: javascriptgoogle-chromeconsole

解决方案


在 JavaScript 中,属性可能是可枚举的,也可能不是。不可枚举的属性会被 for-in 循环或Object.keys(). 所有内置方法都是不可枚举的。(这就是为什么 for-in 没有列出Object.prototype每个对象的所有方法。)

似乎 Chrome 使用深紫色表示可枚举属性,使用浅紫色表示不可枚举。他们不需要被继承。演示(来自 Chrome 73.0.3683.103 的屏幕截图):

Object.defineProperties({}, {
  foo: {enumerable: true, value: 1},
  bar: {enumerable: false, value: 2},
});

在此处输入图像描述

如果您想获取对象的属性,甚至包括不可枚举的属性,您可以使用Object.getOwnPropertyNames(o). 但是,如果要查找继承的属性,则需要自己遵循原型链。


推荐阅读