在 JavaScript 中有两种不同的方法可以创建空对象:
var objectA = {}
var objectB = new Object()
脚本引擎处理它们的方式有什么不同吗?有什么理由使用一个而不是另一个吗?
同样,也可以使用不同的语法创建一个空数组:
var arrayA = []
var arrayB = new Array()
在 JavaScript 中有两种不同的方法可以创建空对象:
var objectA = {}
var objectB = new Object()
脚本引擎处理它们的方式有什么不同吗?有什么理由使用一个而不是另一个吗?
同样,也可以使用不同的语法创建一个空数组:
var arrayA = []
var arrayB = new Array()
使用没有任何好处new Object();
- 而{};
可以使您的代码更紧凑,更具可读性。
对于定义空对象,它们在技术上是相同的。该{}
语法是短,整齐(不以Java-ISH),并让你瞬间填充对象内联-就像这样:
var myObject = {
title: 'Frog',
url: '/img/picture.jpg',
width: 300,
height: 200
};
对于数组,使用new Array();
over几乎没有任何好处[];
——只有一个小例外:
var emptyArray = new Array(100);
创建一个包含所有插槽的 100 项长数组undefined
- 这在某些情况下可能很好/有用(例如(new Array(9)).join('Na-Na ') + 'Batman!'
)。
new Object();
- 它比它笨重{};
而且看起来很傻。[];
- 除非您需要快速创建具有预定义长度的“空”数组。是的,有区别,它们不一样。确实,您会得到相同的结果,但引擎对它们的工作方式不同。其中一个是对象字面量,另一个是构造函数,这是在 javascript 中创建对象的两种不同方式。
var objectA = {} //This is an object literal
var objectB = new Object() //This is the object constructor
在 JS 中一切都是对象,但你应该注意 new Object() 的以下内容:它可以接收一个参数,并且根据该参数,它会创建一个字符串、一个数字或一个空对象。
例如:new Object(1)
, 将返回一个数字。new Object("hello")
将返回一个字符串,这意味着对象构造函数可以根据参数将对象的创建委托给其他构造函数,如字符串、数字等......在管理动态数据时记住这一点非常重要创建对象..
许多作者建议不要使用对象构造函数,当您可以使用某种文字符号代替时,您将确保您正在创建的内容正是您期望在代码中使用的内容。
我建议您进一步阅读 javascript 上的文字符号和构造函数之间的差异,以找到更多详细信息。
它们具有相同的最终结果,但我只想补充一点,使用文字语法可以帮助人们习惯 JSON 的语法(JavaScript 文字对象语法的字符串化子集),因此进入.
另一件事:如果您忘记使用new
运算符,您可能会出现细微的错误。因此,使用文字将帮助您避免该问题。
最终,这将取决于情况和偏好。
对象和数组字面量语法 {}/[] 是在 JavaScript 1.2 中引入的,因此在 4.0 之前的 Netscape Navigator 版本中不可用(并且会产生语法错误)。
我的手指仍然默认说 new Array(),但我是一个非常老的人。值得庆幸的是,Netscape 3 并不是当今许多人不得不考虑的浏览器……
var objectA = {}
速度更快,并且根据我的经验,更常用,因此最好采用“标准”并节省一些输入。