javascript - Chrome 控制台中的浅紫色是什么意思?
问题描述
背景:
我试图从数组类型中提取所有原型函数。
const arrayProto = Array.prototype
const arrayMethods = Object.create(arrayProto)
arrayMethods
返回Array {}
我发现所有方法都在proto中(浅紫色),而没有一个被计算在内。如果我更改arrayProto
为像 [1,2,3] 这样的普通数组,我可以通过 arrayMethods[i] 获取数字,因为所有数字都列在原型. 我的第一个想法是浅紫色的被忽略或不属于 arrayMethods
. 但是我找不到关于这部分控制台的任何文件。为什么以及如何解决?
解决方案
在 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)
. 但是,如果要查找继承的属性,则需要自己遵循原型链。
推荐阅读
- python - 如何使用 boto 获取 dynamodb 表属性的空值
- menu - 在主菜单中显示前 2 个级别
- c# - appsettings-configuration 中的 Serilog PushProperty 不起作用
- javascript - 模糊内容时
模糊在内容上,但 blur 是在原始标题文本 ASP.NET JavaScript 下
- batch-file - 使用 for 循环变量调用预定义变量
- python - 无法在 Keras 中使用已加载模型与多线程环境中的 Tensorflow
- java - 重新加载 Quarkus 应用程序时,VSCode (JDWP) 不显示局部变量
- ios - 如何动态添加 XCTestCase
- python - 如何定义将输出到泡菜文件的格式(字符串、整数等)?
- python - 带有单个数组和/或 empty_like 的 numpy 子句