如何在 NodeJS 中获取 __proto__?
How to get __proto__ in NodeJS?
因此,当我在浏览器控制台中将数组声明为 var arr = []
然后执行 arr.__proto__
时,我在控制台中获得了原型。
Browser Javascript
但是当我在 nodeJs 中做同样的事情时,我得到 []
作为结果。
NodeJs
Nodejs 在服务器上 javascript 运行 为什么结果不一样。我错过了什么吗?我如何访问nodeJs中的原型并获得相同的结果。
您看到的只是显示差异造成的怪癖。 arr.__proto__
在两种情况下都指向完全相同的对象 - Array.prototype
- 只是你的浏览器和 Node 将对象呈现给用户以进行不同的显示。
例如,您已经可以在 Node 中访问 arr.__proto__.fill
,即使它在记录 arr.__proto__
时未显示在控制台中。如果需要,您可以手动遍历属性以显示它们:
const arr = [];
Object.getOwnPropertyNames(arr.__proto__).forEach((key) => {
console.log(key);
});
以上将向您展示两种环境中完全相同的结果。
如果将 Node 连接到 Chrome's console,您会发现 console.log(arr.__proto__)
在 Chrome 中查看来自 Node 的日志时看起来完全一样从 Chrome.
中的网页登录
但是,请注意 __proto__
已被弃用 - 现在您应该更喜欢使用 Object.getPrototypeOf
。
因此,当我在浏览器控制台中将数组声明为 var arr = []
然后执行 arr.__proto__
时,我在控制台中获得了原型。
Browser Javascript
但是当我在 nodeJs 中做同样的事情时,我得到 []
作为结果。
NodeJs
Nodejs 在服务器上 javascript 运行 为什么结果不一样。我错过了什么吗?我如何访问nodeJs中的原型并获得相同的结果。
您看到的只是显示差异造成的怪癖。 arr.__proto__
在两种情况下都指向完全相同的对象 - Array.prototype
- 只是你的浏览器和 Node 将对象呈现给用户以进行不同的显示。
例如,您已经可以在 Node 中访问 arr.__proto__.fill
,即使它在记录 arr.__proto__
时未显示在控制台中。如果需要,您可以手动遍历属性以显示它们:
const arr = [];
Object.getOwnPropertyNames(arr.__proto__).forEach((key) => {
console.log(key);
});
以上将向您展示两种环境中完全相同的结果。
如果将 Node 连接到 Chrome's console,您会发现 console.log(arr.__proto__)
在 Chrome 中查看来自 Node 的日志时看起来完全一样从 Chrome.
但是,请注意 __proto__
已被弃用 - 现在您应该更喜欢使用 Object.getPrototypeOf
。