函数 | new.target属性

new.target属性是ES6中新增的函数属性,new.target用于检测函数是否使用new关键字调用

如果函数是正常调用的,new.target的值为undefined;如果是使用new关键字调用的,则new.target将引用被调用的构造函数

1
2
3
4
5
6
7
8
9
function King() {
if (!new.target) {
throw 'King must be instantiated unsing "new"!';
}
console.log('King instantiated unsing "new"!')
}

new King(); // King instantiated unsing "new"!
King(); // Error: King instantiated unsing "new"!