【发布时间】:2010-09-20 01:35:58
【问题描述】:
在 JavaScript 中创建空对象有两种不同的方法:
var objectA = {}
var objectB = new Object()
脚本引擎处理它们的方式有什么不同吗?有什么理由使用其中一个吗?
同样,也可以使用不同的语法创建一个空数组:
var arrayA = []
var arrayB = new Array()
【问题讨论】:
-
警告:有一个小的差异可能会导致非常恼人的错误!在 Object 原型中创建一个将其分配给“{}”的空对象将是由“new”运算符创建的每个 Object 实例中的相同 Object 实例。当你使用“new Object({})”时,你会有不同的实例。
-
值得一提的是,除了
var objectA = {} var objectB = new Object(),还有第三个构造会产生相同的结果:var objectC = Object.create(Object.prototype); -
{}和[]使用{}而不是new Object()。使用[]而不是new Array()。当成员名称是连续整数时使用数组。当成员名称是任意字符串或名称时使用对象。 source -
new Object()和{}不是完全空的对象,它们是具有 Object.prototype 的对象。您可以将Object.create(null)用于真正的空对象(至少根据 mozilla 文档:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…)
标签: javascript arrays object javascript-objects new-operator