原型鏈([[prototype]]或__proto__)

對(duì)象創(chuàng)建方式

1.對(duì)象直接量

var person={
    name="oBa";
    sex='man';
}

[[prototype]]指向Object.prototype

2.new方法,與1類(lèi)似

var person=new Object();
person.name='oBa';
person.sex='man';

[[prototype]]指向Object.prototype

3.工廠(chǎng)方式 ,少見(jiàn)了

 var createPerson = function(name,age,job){
       var person = new Object();
       person.name = name;
       person.age = age;
       person.job = job;
       person.sayName = function(){
          alert(person.name);
       }
       return person;
    }
    
    var person1 = createPerson("oBa","18","mokey");
    person1.sayName(); //  oBa

person1的[[prototype]]指向Object.prototype

4.構(gòu)造函數(shù)

function Person(name,age,job){   
    this.name = name; 
    this.age = age;
    this.job = job;
}; 
Person.prototype.sayName = function(){
        alert(this.name); 
};  
var person1 = new Person("oBa",18,"bape");
person1.sayName();

person1的[[prototype]]指向Person.prototype,
Person.prototype的[[prototype]]指向Object.prototype,
這里面多了一層,有new就是不一樣

5.由Object.create()方法創(chuàng)建//es5

var person={
    name="oBa";
    sex='man';
}
var person1=Object.create(person);

person1的[[prototype]]指向person
Object.create()內(nèi)部大概原理:

Object.create=function(p){
   function F(){};
   F.prototype=p;
   return new F();
}

.proto===.constructor.prototype不一定正確
例如一個(gè)對(duì)象通過(guò)Object.create()創(chuàng)建,則不成立

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容