/** * 实现一个new * by daidai */ function Dog (name){ this.name = name; this.say = function () { console.log('我的name叫' + this.name) } } function _new (fn,...args) { const _obj = Object.create(Dog.prototype) const rel = fn.apply(_obj,args) return rel instanceof Object ? rel : _obj } let news = _new(Dog,'zhangsan')
由上代码可以看出 new的过程其实就是以构造器的prototype属性为原型,创建一个新的对象,并且把构造器的this指向新创建的这个对象