意外丢失 new 会怎么样子。
var Person = function () {
this.age = 18;
}
var p1 = Person();
p1;
age;
怎么防止意外的丢掉 new ,而带来的现象?
1. 通过使用严格模式,函数内部 this 不能指向全局对象,undefined 不能添加属性。
function Person(name, age) {
'use strict';
this.name = name;
this.age = age;
}
Person;
2. 在构造函数内部判断是否使用了 new 命令。
function Person(name, age) {
if ( !(this instanceof Person )) {
return new Person(name, age);
}
this.name = name;
this.age = age;
}
3. 使用 new.target 来判断. 函数通过 new 调用,new.target 指向当前函数,否则为 undefined.
function Person(name, age) {
if ( !new.target ) {
return new Person(name, age);
}
this.name = name;
this.age = age;
}
`