JS中的new操作符原理解析
var Person = function(name){ this.name = name; } Person.prototype.sayHello = function() { console.log('hello ' + this.name); } var p1 = new Person('HANMEI'); p1.sayHello();
1. 创建一个类的实例:创建一个空对象obj,然后把这个空对象的__proto__设置为Person.prototype(即构造函数的prototype);
2. 初始化实例:构造函数Person被传入参数并调用,关键字this被设定指向该实例obj;
3. 返回实例obj。
New实现:
function New(F){ var obj = {'__proto__': F.prototype}; /*第一步*/ return function() { F.apply(obj, arguments); /*第二步*/ return obj; /*第三步*/ } }