new操作符实现原理
new操作符实现原理: function news(func) { var target = {};//生成新对象 target.__proto__ = func.prototype;//实例的__proto__指向原型,构造函数的prototype也指向原型(链接到原型) var res = func.call(target);//把函数的this绑定在了新生成的对象中 if (typeof (res) == "object" || typeof (res) == "function") { return res;//如果传入的函数(构造函数)有自己的返回值,则返回该值 } return target;//如果如果传入的函数(构造函数)没有自己的返回值,则返回新对象 } 如果暂时看不明白,请往下看: 1.明白new的原理首先我们需要明白原型,构造函数,实例的关系 原型( prototype ):一个简单的对象,用于实现对象的属性继承。可以简单理解成对象的父亲。在火狐和谷歌中,每个js对象中都包含一个 __proto__ (非标准)的属性指向它爹(该对象原型),可obj.__proto__进行访问。 构造函数:可以 通过new来新建一个对象 的函数。 实例:通过 构造函数 和 new 创建出来的 对象 ,就是实例。实例通过 __proto__ 指向原型,通过 constructor