我试图理解以下输出:
'use strict';
console.log(Object.getPrototypeOf([]));
// []
console.log(Object.getPrototypeOf(Array.prototype));
// {}
console.log(Object.getPrototypeOf([]) == Array.prototype);
// true
console.log(Object.getPrototypeOf([]) === Array.prototype);
// true
console.log([]=={});
// false
console.log([]==={});
// false
特别是,为什么第 6 行和第 8 行的计算结果为 true
,而第 10 行和第 12 行的计算结果为 false
。#
编辑:我在第 6 行和第 8 行犯了一个愚蠢的拼写错误,现已编辑。这使得问题变得不同。抱歉。
最佳答案
Javascript中的所有原型(prototype)最终都继承自同一个对象原型(prototype)。这就是为什么如果您将属性添加到对象原型(prototype),则程序中的所有对象最终都将具有该属性。 在第 6 行和第 8 行中,您正在比较 Object.prototype 与其自身相等。
然而,在第 10 行和第 12 行中,您正在比较 2 个不同的对象,它们可能共享相同的原型(prototype),但它们在内存中是完全不同的两个对象。
关于JavaScript:对象 `{}` 和数组 `[]` 在什么意义上相同或不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025297/