javascript原型的問題?

時間 2021-06-03 17:51:30

1樓:yibuyisheng

如果我記得沒錯的話,在ObjectiveC中,對物件成員的訪問被稱為傳送訊息。

此處「例項.屬性」的形式在內部也是乙個傳送訊息的過程。也就是說,給例項傳送乙個訊息說:

我想訪問你上面的某個屬性!例項收到這個訊息之後,就開始按照原型鏈的屬性查詢規則去查詢相應的屬性,找到就返回相應的值,找不到就是undefined。這種屬性訪問方式也稱為間接訪問。

這種訪問也是動態的,即每次訪問都會走這個訊息傳送過程,所以能實時反映原型鏈上的變化。

在樓主舉出的例子中,就是先給Foo物件傳送訪問age的訊息,然後Foo就開始在自己的原型鏈上找age屬性了,當找到Function.prototype上時,就找到了age,然後返回。

還有一點是,Foo作為Function的例項,在例項化的時候,並不會拷貝乙份Function.prototype的屬性到Foo上來,而是直接存乙個到Function.prototype的引用。

Javascript 採用基於原型的物件導向程式設計是出於效能的考慮嗎?

跟效能的關係應該不大。js裡面一切都是物件,類 函式 也是物件,並且都是動態的,任何乙個類都有可能被使用者改動。如果不設計這麼乙個基於prototype的鏈式檢索結構,還能怎麼做?我想不出還有別的好方法可以實現型別系統的同時不損失js的動態靈活性。設想一下js如果使用乙個c 那樣的型別系統,會有多麼...

萬物皆空之 JavaScript 原型

說明你心裡還帶著強烈的傲慢 拒絕承認這正是數千年來進化的最好方式 人只有有了人性,才能組成社會 沒有人性,利益鏈條之中就會缺失最重要的情感利益缺失情感利益,利益博弈就會變得簡單單薄 人際關係就會變成最純粹的簡單利益博弈 社會根本無法產生的 乙個無法產生社會的物種,是不可能君臨食物鏈頂端蹂躪地球上的萬...

JavaScript 實現原型繼承的三種方式區別,應該用哪一種?

灰色哲學家 第一種和第二種只是方法不同效果相同,用例項化物件作為b的原型,只有第三種才是真正改變原型鏈的繼承關係。理論上第三種才是正確的繼承方法,因為其建構函式及原型鏈繼承關係都設定正確。第一種和第二種需要手動修改建構函式才嚴謹。但是一般情況下用第一種就ok了,簡單。第二第三種使用的Object物件...