为什么使用{}代替新的Object()并使用[]而不是new Array()和true/false而不是new Boolean()?

Pau*_*son 15 javascript

很多人说你应该避免使用新的Object,新的Array()而是使用{}.[]和真/假.

使用文字结构获取Object或Array的新实例而不是使用new的好处是什么?我知道克罗克福德不喜欢新的,但这是主要论点吗?

Tim*_*own 8

使用相应构造函数的对象和数组文字的优点是:

  • 更短,更易读
  • 更安全:当覆盖ArrayObject构造函数被覆盖时,文字仍然有效
  • 可能更快,但它不太可能是一个主要的考虑因素(任何瓶颈几乎肯定会源自代码中的其他地方)

在数组的情况下,文字的另一个优点是:单独使用Array构造函数创建一个包含单个成员的数组是不可能的.例如,[3]将创建一个数组,其中一个元素是数字3,同时new Array(3)创建一个长度为3的数组.

更新:现在已经编辑了以下段落不再相关的问题.

关于布尔人,你似乎有一种误解:new Boolean(false)不一样false.该Boolean()构造函数创建一个Boolean对象,而falsetrue是布尔元.实际上,在例如语句中强制转换为布尔值时new Boolean(false)进行求trueif.简而言之,使用Boolean()构造函数的原因很少.使用truefalse替代.类似地,诸如字符串和数字之类的其他基元具有相应的String()Number()构造函数,其生成StringNumber原始字符串和数字不同的对象,并且通常应该避免.

  • @Paul:我会在我的回答中留下布尔的东西:它仍然是有用的信息. (2认同)