new操作符創建對象可以分為以下四個步驟:
- 創建一個空對象
- 將所創建對象的__proto__屬性值設為構造函數的prototype的屬性值
- 執行構造函數中的代碼,構造函數中的this指向該對象
- 返回對象
因此上面的過程就可以等同於下面的過程:
var Person = function(name, age) { this.name = name; this.sex= sex; }; Person.prototype.show = function() { console.log(this.name, this.sex); }; var obj = {}; obj.__proto__ = Person.prototype; Person.call(obj, "xiao", 20); // var obj = new Person("xiao", 20); console.log(obj);