【问题标题】:What does light purple mean in Chrome's console?Chrome 控制台中的浅紫色是什么意思?
【发布时间】:2019-04-28 10:46:06
【问题描述】:

浅紫色和紫色有什么区别? 谢谢。

背景:

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

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

arrayMethods 返回Array {}

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

【问题讨论】:

标签: javascript google-chrome console


【解决方案1】:

在 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)。但是,如果要查找继承的属性,则需要自己遵循原型链。

【讨论】:

    【解决方案2】:

    紫色

    它代表数组的索引或对象的键名

    浅紫色

    它代表Object.prototypeArray.prototype .您可以使用该对象或数组执行原型函数

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2023-01-28
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多