JavaScript:对象 `{}` 和数组 `[]` 在什么意义上相同或不同

标签 javascript arrays javascript-objects

我试图理解以下输出:

'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/

相关文章:

.net - 比较两个 .NET Array 对象

javascript - 通过对象数组进行映射并动态访问其属性(使用变量)

javascript - 用于在 CKEditor 中插入图像的 G-Mail 风格拖放

javascript - 如果有多个图像,请添加样式

php如何遍历数组直到满足条件?

java - 程序如何定位数组的索引?

javascript - JavaScript 原生类型比较,Class 和 {} 一样吗?

javascript - 检索对象中最深层属性的路径

javascript - 使用显示属性淡入淡出

javascript - 如何从javascript中的文本输入按键调用函数?