传送门:JavaScript 教程 / 面向对象编程 / 实例对象与 new 命令 / new 命令的原理
1. 严格模式
function Person(name, age) {
'use strict';
this._name = name;
this._age = age;
}
2. 内部判断
function Person(name, age) {
if (!(this instanceof Person)) {
return new Person(name, age); // 直接返回实例对象
// throw new Error('请使用 new 命令调用!'); // 或者报错提示
}
this._name = name;
this._age = age;
}
3. 使用 new.target 属性
function Person(name, age) {
if (!new.target) {
// return new Person(name, age); // 或直接返回实例对象
throw new Error('请使用 new 命令调用!'); // 报错提示
}
this._name = name;
this._age = age;
}