“新对象()”和“对象字面符号”有什么区别?

“新对象()”和“对象字面符号”有什么区别?

用于创建对象的基于构造函数的语法有什么区别:

person = new Object()

.这个字面语法:

person = {
    property1 : "Hello"};

虽然JSLint更喜欢使用对象文字表示法,但两者似乎都在做相同的事情。

哪个更好,为什么?


长风秋雁
浏览 380回答 3
3回答

白板的微信

他们都做同样的事情(除非有人做了不寻常的事情),除了你的第二个人创建一个对象和向它添加一个属性。但是文字符号在源代码中占用的空间较少。对于正在发生的事情,它显然是可以识别的,所以使用new Object()实际上,您只是在输入更多的内容,并且(理论上,如果不是JavaScript引擎优化的话)执行一个不必要的函数调用。这些person = new Object() /*You should put a semicolon here too.   It's not required, but it is good practice.*/ -or-person = {     property1 : "Hello"};技术上不做同样的事。第一个只是创建一个对象。第二个创建一个并分配一个属性。对于第一个相同的属性,则需要第二个步骤来创建和分配属性。某些人可以做的“不寻常的事情”是隐藏或分配给缺省值。Object全球:// Don't do thisObject = 23;在那极不寻常案件,new Object会失败但是{}会有用的。在实践中,从来没有理由使用new Object而不是{}(除非你做了非常不寻常的事情)。

汪汪一只猫

没有方法的简单对象没有区别,如您的示例所示。但是,当您开始向对象添加方法时,会有很大的不同。字面方式:function Obj( prop ) {      return {          p : prop,          sayHello : function(){ alert(this.p); },      }; }原型方式:function Obj( prop ) {      this.p = prop; } Obj.prototype.sayHello = function(){alert(this.p);};两种方法都允许创建Obj就像这样:var foo = new Obj( "hello" );但是,使用文字方式,您可以携带sayHello方法在对象的每个实例中。然而,通过原型方式,该方法在对象原型中定义,并在所有对象实例之间共享。如果您有很多对象或方法,那么字面方式会导致相当大的内存浪费。
打开App,查看更多内容
随时随地看视频慕课网APP