new 原理大致分为一下四个步骤:
- 创建一个对象;(var obj = {})
- 将构造函数的this指向该对象;
- 执行构造函数的方法,使该对象继承构造函数的方法和属性;
- 返回该对象。
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
Person.prototype.eating = function() {
console.log('I`m eating')
}
var hcx = new Person('Hcx', 18, 'man');
实现一个new
function _new(fn, ...arg) {
var obj = {};
fn.apply(obj, arg);
obj._proto_ = fn.prototype;
return obj;
}