*以下全文用[[prototype]]代表物件真正的原型鏈
prototype與__proto__的區別
__proto__是真正的原型鏈,也就是[[prototype]],使用原型鏈時,查詢物件的屬性是通過__proto__來查詢,而不是prototype
varfoo=function(){};
foo.__proto__.a ='b';
foo.prototype.a ='a';
alert(foo.a);//b
prototype只是用於構建用new關鍵字建立的物件,將構造器函式的prototype的引用指向於構建的物件的__proto__
varfoo=function(){};
var test =newfoo();
alert(test.__proto__ ===foo.prototype);//true
構造器函式的prototype與__proto__是不相同的,其protoype會被構建的物件的[[prototype]]引用,其[[prototype]]是function物件的[[prototype]],function物件的prototype與__proto__是相同的
varfoo=function(){};
alert(foo.prototype ===foo.__proto__);//false
alert(function.__proto__ ===foo.__proto__);//true
alert(function.__proto__ ===function.prototype);//true
constructor是什麼
constructor也就是構造器函式的引用,乙個構造器函式的prototype的constructor也就等於這個構造器函式本身,乙個構造器函式的__proto__的constructor,也就是function的consturctor就等於function本身
varfoo=function(){};
var test =newfoo();
alert(foo.constructor ===function);//true
alert(foo.prototype.constructor === test.constructor);//true
alert(foo=== test.constructor);//true
alert(foo.constructor ===foo.prototype.constructor);// false
foo
|_ protoype
|_ consturctor === foo
|_ __proto__ === object.prototype
|_ constuctor === object
|_ __proto__ === null
|_ __proto__
|_ __proto__ === function.protoype
|_ constuctor === function
|_ __proto__ === object.protoype
|_ consturctor === object
|_ __proto__ === null
test
|_ __proto__ === foo.protoype
|_ constructor === foo
|_ __proto__ === object.protoype
|_ constuctor === object
|_ __proto__ === null
只有函式物件才有protoype屬性,object.proto=== function.proto,object.proto.contructor === object
開始寫部落格
不知不覺間離開校園快兩年了,在這段時間裡我作為嵌入式軟體設計人員好歹也算是入了門。回想起兩年前,我連什麼是嵌入式也不知道,就想著工作可能就是寫c 罷了。其實當時我最想去的是遊戲行業的軟體開發 確定了工作後我最初的打算是邊工作邊學習遊戲引擎 ai相關,後來發現一來我根本沒有這麼多的精力,二來我學習的耐...
決定寫部落格
決定寫部落格 每當拜讀牛人的部落格時,心情是複雜的 看到如此高質量的博文,對自己的技術有很大的幫助 但是看完後有時會問自己,何時才能寫出高質量的博文,能幫助他人成長的博文,如果能達到這一點,我相信對自己對他人都是不錯的。我深知自身的技術水準不高,生怕自己不可見人的技術寫出來給他人瀏覽,總認為會誤導他...
寫部落格初衷
說實話,我從來不知道對於乙個技術宅來說,寫部落格是一件重要的事。幸運的是,我們實驗室的大牛們都有寫部落格的習慣,他們告訴我,部落格是自己最好的簡歷。你可以通過這個平台,向別人最好的展示自己。出於功力,為了以後方便自己找到乙份比較滿意的工作,我決定試著寫自己的部落格。跟乙個導師,吃一行飯。我們實驗室是...