這篇文章帶給大家的內容是關於javascript借用建構函式的解析(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
借用建構子
為了解決原型中包含引用型別值所帶來問題,開發者開始使用一種叫做借用建構函式(constructor stealing)的技術。
有時候也叫偽造物件或經典繼承。
這種技術的基本思想非常簡單,即在子類型建構函數內部呼叫超類型建構函數。
函數只不過是在特定環境中的執行程式碼的對象,因此透過使用apply()和call()方法也可以在新創造的對像上執行建構子。
function SuperType() { this.colors = ["red","blue","green"]; } function SubType() { //继承了SuperType SuperType.call(this); } var instance1 = new SubType(); instance1.colors.push("black"); console.log(instance1.colors); //["red","blue","green","black"] var instance2 = new SubType(); console.log(instance2.colors); //["red","blue","green"]
注意,這一段程式碼「借調」了超類型的建構子。
function SubType() { //继承了SuperType SuperType.call(this); }
透過使用call()方法(或apply()方法也可以),實際上是在將要建立的SubType實例物件的環境下呼叫了SuperType建構子。
這樣一來,就會在新SubType物件上,執行SuperType()函數中定義的所有物件初始化程式碼。
所以,SubType的每個實例物件都有具有自己的colors屬性的副本了
#傳遞參數
##相對於原型鏈而言,借用建構函式有一個很大的優勢,就是可以在子型別建構函式中傳遞參數給超類型建構函式。function SuperType(name) { this.name = name; } function SubType(){ //继承了SuperType,同时还传递了参数 SuperType.call(this, "Shaw"); //实例属性 this.age = 18; } var instance = new SubType(); console.log(instance.name); // "Shaw" console.log(instance.age); // 18
#
以上是javascript借用建構函式的解析(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!