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; /*第三步*/ } }
