这不是开玩笑的设置,我真的在问。
Douglas Crockford 喜欢说在 javascript 原型面向对象语言中不需要new
.
他解释说,这new
只是为了让来自基于类(即“经典”)面向对象的编程语言的人们在一定程度上感到舒适:
JavaScript中,我们很难
new
雅JavaScript 是一种原型语言,但它有一个
new
运算符,试图使它看起来有点像经典语言。这往往会使程序员感到困惑,从而导致一些有问题的编程模式。你永远不需要
new Object()
在 JavaScript 中使用。请改用对象字面量{}
。
好的:
new
坏的{}
好的
但随后评论员Vítor De Araújo 指出,两者并不相同。他举了一个例子来说明 astring
不像 an object
:
字符串对象和字符串值不是一回事:
js> p = "Foo" Foo js> p.weight = 42 42 js> p.weight // Returns undefined js> q = new String("Foo") Foo js> q.weight = 42 42 js> q.weight 42
字符串值不能有新属性。同样的事情对其他类型也有效。
这里发生了什么string
而不是 an object
?我是否将 javascript 与其他一些语言混淆了,其中一切都是对象?