優點
1.資料共享 節約記憶體記憶體空間
2.實現繼承
我們知道在js中,萬物皆物件,物件可以說是重中之重了。每乙個物件都擁有自己的屬性。但是在這個世界中有很多東西都是相似的,可以歸為一類,他們有共同的方法和屬性。不可能讓每乙個物件都定義乙個屬性吧。那樣太消耗記憶體了。所以,在js中怎麼才能讓多個物件共享乙個或多個方法呢?原型的出現就是為了解決這個問題。
在js中每個物件都有乙個與它關聯的物件,叫做原型物件(可以理解為兄弟物件,他們兩個有一定的關係)。每一次獲取物件屬性都是一次查詢過程,當在物件的自有屬性中找不到時就會去查詢它的原型物件。
在js中函式也是乙個物件。每個函式都有乙個prototype屬性(只有函式才有prototype屬性),這是乙個指標,指向乙個物件,而這個物件的用途是包含可以由特定型別的所有例項共享的屬性和方法。按照字面意思來理解,那麼prototype就是通過呼叫建構函式而建立的那個物件例項的原型物件。其中原型物件會自動獲得乙個constructor屬性,這個屬性指向原來的建構函式。如下面的man.prototype.constructor指向man。
function man(name,age)
function test()
futhertype.prototype.getfuthervalue = function()
function sontype()
sontype.prototype = new futhertype();
sontype.prototype.getsonvalue = function()
var instance = new sontype();
console.log(instance.getfuthervalue()); //true
我對js原型鏈的理解
引言 從關鍵字new 說起 我來試著模擬一下new的操作過程。模擬new關鍵字的行為 function methodnew func func 新物件的建構函式 實際上等價於object obj.constructor func 更改obj的constructor屬性 obj.proto func....
JS原型和原型鏈
建立建構函式 function word words word.prototype 建立例項 var w new word hello world w.print function w.print hello world w.alert hello world function.prototype....
js原型鏈和原型
1 原型 在js中一切皆物件,那原型也是乙個物件,通過原型可以實現物件的屬性繼承,js的物件中包含著乙個 prototype 內部屬性,這個屬性所對應的就是物件的原型。prototype 作為物件的內部屬性不能被直接訪問,所以為了方便檢視乙個物件的原型,提供了 proto 這個非標準的訪問器,在js...