從關係圖中能夠看出來,ECMAScript中建立一個對象是經過new構造函數實現的,而本質上來講這個對象實際上是以構造函數的屬性prototype指向的對象爲基本模板的,所以新對象的__proto__屬性代表了本身來源於誰。git
該屬性用來指向建立一個對象的基本模板,默認指向new構造函數,也能夠修改,或者經過改屬性爲新對象添加屬性。github
須要注意的是,該屬性只有函數纔有。函數
//構造函數 function Clazz(name) { this.name = name; } //建立對象 var clazz = new Clazz('你好2007'); //經過prototype給對象添加方法 Clazz.prototype.getName = function () { alert(this.name); }; clazz.getName();
這個是對象上的屬性,比較有意思,由於不是標準中規定的,使用的時候要當心。this
該屬性的意思指建立該對象的構造函數的prototype,所以你能夠經過對象的該屬性修改原型。spa
function Clazz(name) { this.name = name; } var clazz = new Clazz('你好'); var clazz2 = new Clazz('2007'); //經過__proto__給原型添加方法,這樣建立的對象也會有該方法 clazz2.__proto__.getName = function () { alert(this.name); }; clazz.getName();