这不是一个笑话的设置,我真的在问.
Douglas Crockford喜欢说在javascript原型面向对象语言中没有必要new.
他解释说,这new只是为了让人们从基于类(即" 经典 ")的面向对象编程语言中获得某种程度的安慰:
JavaScript,我们很难
new雅JavaScript是一种原型语言,但它有一个
new运算符,试图使它看起来有点像经典语言.这往往会使程序员感到困惑,从而导致一些有问题的编程模式.您永远不需要
new Object()在JavaScript中使用.请改用对象文字{}.
好的:
new 坏  {} 好但是后来评论者VítorDeAraújo指出这两者并不相同.他给出了一个例子,表明a string不像object:
字符串对象和字符串值不是同一个东西:
Run Code Online (Sandbox Code Playgroud)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不是一个object?我是否混淆了javascript与其他一些语言,其中一切都是对象?
可能重复:
为什么有两种JavaScript字符串?
例如,new RegExp()如果我们需要动态计算正则表达式,我们需要使用而不是正则表达式文字.
然而,当任何人需要使用String/Number/Boolean对象而不是原始版本时,究竟是什么边缘情况?(因为我似乎无法想到一个需要它的地方)
javascript ×2