聲明了一個構(gòu)造函數(shù)如下
function Person(name){
this.name = name
}
調(diào)用的話可以有兩種方式:
- 使用
new關(guān)鍵字實例化調(diào)用var p = new Person('keke') - 作為普通函數(shù)直接調(diào)用
var p = Person('keke')
那怎么禁止第二種調(diào)用的方式
如果構(gòu)造函數(shù)不是通過new命令或Reflect.construct()調(diào)用的,new.target會返回undefined,因此這個屬性可以用來確定構(gòu)造函數(shù)是怎么調(diào)用的。
function Person(name){
if(new.target){
this.name = name
}else{
throw('error')
}
}