我已经写了一些我在视频中找到的代码,它看起来像这样:
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");
没有任何改变,为什么作者选择使用它?效果是什么?
答案 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
}