理解new對象過程,須要提早了解原型及原型鏈的相關知識
咱們都知道,JS當中建立對象使用的是原型設計模式,即便用new操做符調用構造函數
這裏先看一個例子:設計模式
function Person(name,sex){ this.name = name; this.sex = sex; }; Person.prototype.go = function(){ return this.name; } var p = new Person('金文','男');
這個過程能夠分爲4個步驟,具體以下:
①建立一個新的對象函數
var obj = {};
②把該對象的__proto__屬性設置爲構造函數的prototype屬性,即完成原型鏈this
obj.__proto__ = Person.prototype;
③執行構造函數中的代碼,構造函數中的this指向該對象(obj)prototype
obj.name = '金文'; obj.sex = '男'; obj.go = function(){return '金文';}
④返回該對象obj;設計
var obj = { name:'金文', sex:'男', go:function(){ return '金文'; } }