// ES6 提供了一个特殊的API,可以使用该API在函数内部,判断该函数是否使用了 new 来调用
/*
```js
new.target
// 该表达式,得到的是: 如果没有使用 new 来调用函数,则返回 undefined
// 如果使用 new 调用函数,则得到的是 new 关键子后面的函数本身
```
*/
function Person(firstName, lastName) {
// 判断是否是使用 new 的方式来调用的函数
// // 过去的判断方式
// if (!(this instanceof Person)) {
// throw new Error("该函数没有使用new来调用");
// }
// console.log(new.target);
if(new.target === undefined){
throw new Error("该函数没有使用new来调用");
}
this.firstName = firstName;
this.lastName = lastName;
this.fullName = `${firstName} ${lastName}`;
}
const p1 = new Person("hello", "world");
console.log(p1);
// const p2 = Person("hello", "javaScript");
// console.log(p2);
const p3 = Person.call(new Person(), 'hello', 'js'); // 此方式会绕开 this instanceof Person 判断
// console.log(p3);
ES6