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

时间:2019-04-28 10:46:07

标签: javascript google-chrome console

浅紫色和紫色之间有什么区别? 谢谢。 enter image description here

背景:

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

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

arrayMethods返回Array {}

我发现所有方法都在 proto (浅紫色)中,但没有计算在内。如果将arrayProto更改为[1,2,3]之类的常规数组,可以通过arrayMethods [i]获取数字,因为所有数字都在 proto 中列出。 我首先想到的是浅紫色的那些被忽略,或者不属于arrayMethods。但是,我找不到有关控制台这一部分的任何文档。 为什么以及如何解决?

2 个答案:

答案 0 :(得分:1)

紫色

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

浅紫色

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

答案 1 :(得分:1)

在JavaScript中,属性可能可枚举。 for-in循环或(let [{firstthing 10, lastthing 30} (seq '(10 2 30 ))] [firstthing lastthing]) ; Execution error (IllegalArgumentException) at user/eval367 (REPL:1). ; No value supplied for key: 30 将忽略不可枚举的属性。所有内置方法都是不可枚举的。 (这就是为什么for-in不会列出每个对象在Object.keys()上的所有方法的原因。)

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

Object.prototype

enter image description here

如果要获取对象的属性,甚至包括无数的属性,都可以使用Object.defineProperties({}, { foo: {enumerable: true, value: 1}, bar: {enumerable: false, value: 2}, }); 。但是,如果要查找继承的属性,则需要自己遵循原型链。