作用域安全的构造函数
众所周知,构造函数一般用new去调用,比如:
function Person(name,age){
this.name = name;
this.age = age;
}
var xiaoming = new Person('xiaoming',21);
因为使用new 调用构造函数,所有构造函数内部使用的this会指向新创建的对象的实例,但是,如果没有用new去调用构造函数,情况会怎么样???可能一堆代码里面就有那么几段手误的。
比如:
var xiaoming = Person('xiaoming', 21);
此时情况怎么样,没错,因为this对象是运行时候绑定的,此时的this直接指向了window,那么window就有了window.name 和window.age,这是很可怕的事情,会导致意想不到的错误。
为了安全起见,创建一个作用域安全的构造函数式很有必要的。
function Person(name,age){
if(this instanceof Person){
this.name = name;
this.age = age;
}else{
return new Person(name,age);
}
}
主要是加入了检查并确保this是Person实例的判断,这个,即使不适用new去调用构造函数,也能返构造函数的实例。

浙公网安备 33010602011771号