JavaScript中“新”的影响

时间:2015-01-07 20:32:24

标签: javascript new-operator

我已经写了一些我在视频中找到的代码,它看起来像这样:

var clientX = clientX || {} ; 
clientX.MyClass = function(initialValue){
  var var1 = initialValue;
  var publicMembers = {
    get_var1 : function(){
      return var1; 
    }
  };
  return publicMembers;
}



var result = new clientX.MyClass("val1");
alert(result.get_var1());

clientX.instance = new  clientX.MyClass("val2");
alert(clientX.instance.get_var1());


clientX.instance2= new clientX.MyClass("val3");
alert(clientX.instance2.get_var1());

事情是,在删除" new"我使用时的关键字:var result = new clientX.MyClass("val1");没有任何改变,为什么作者选择使用它?效果是什么?

2 个答案:

答案 0 :(得分:5)

MyClass函数不使用this并且具有明确的return值,因此new的使用没有任何实际效果。

答案 1 :(得分:3)

new关键字用作pseudoclassical instantiation的一部分,其中构造函数对象具有附加到关键字“this”的属性,但是没有写入返回值。

var Car = function(){

  this.color = 'blue';
  this.make = 'toyota';
  this.model = 'camry';

}

现在,编写var x = new Car()将在解释中添加以下行:

var Car = function(){
  var this = {}; //added by new
  this.color = 'blue';
  this.make = 'toyota';
  this.model = 'camry';
  return this; //added by new
}