创建一个空对象
让空对象的
__proto__
(IE 没有该属性) 成员指向构造函数的 prototype 成员对象使用 apply 调用构造函数,属性和方法被添加到 this 引用的对象中
如果构造函数中没有返回其他对象,那么返回 this,即创建的这个新对象;否则,返回构造函数返回的对象
function Dog(name,age){
this.name = name
this.age = age
this.say = say
function say(){
console.log(name,age)
}
}
let dog1 = new Dog('pp',5)
dog1.say()
//手写new原理
function _new(fn,...args){
const obj = Object.create(fn.prototype)
const rel = fn.apply(obj,args)
return rel instanceof Object ? rel : obj
}
let dog2 = _new(Dog,'bb',8)
dog2.say()