摘要:原型鏈繼承核心代碼核心代碼優點簡單容易實現缺點多拷貝了一份的屬性過來并且的方法每生成一個新的就要再重新拷貝一份造成了不必要的浪費構造函數繼承優點簡單容易實現可以同時繼承多個父對象三姓家奴缺點只能繼承定義在父元素上的屬性或方法而對于父元素原型
//1.原型鏈繼承 var supClass = function(name, sex) { this.name = name || "red" this.sex = sex || "good" this.father = "father" this.say = function() { console.log(this.name) } } supClass.prototype = { sayHi() { console.log(this.name + " hi") } } /*var sonClass = function(name, sex) { this.name = name this.sex = sex } console.log(sonClass.prototype) sonClass.prototype = new supClass() //核心代碼 sonClass.prototype.constructor = sonClass//核心代碼 var son1 = new sonClass("red", "s") son1.say()*/ //優點: 簡單,容易實現 //缺點: 多拷貝了一份supClass的屬性過來,并且supClass的方法每生成一個新的 // sonClass就要再重新拷貝一份,造成了不必要的浪費 //2.構造函數繼承 /*var sonClass = function(name, sex, type) { supClass.call(this) this.type = type this.sex = sex this.name = name } var son1 = new sonClass("jay", "man", "goodman") son1.say()*/ //優點: 簡單,容易實現,可以同時繼承多個父對象(三姓家奴) //缺點: 只能繼承定義在父元素上的屬性或方法,而對于父元素原型對象上的屬性或方法 //則無法繼承 //3.混合繼承 /*var sonClass = function(name, sex, type) { supClass.call(this) this.type = type this.sex = sex this.name = name } sonClass.prototype = new supClass() sonClass.prototype.constructor = sonClass var son1 = new sonClass("jay", "man", "goodman") son1.say() son1.sayHi()*/ //優點: 幾乎完美 //缺點: 實現復雜,使用原型繼承的部分仍然沒有解決會多拷貝一份父類屬性從而造成 //不必要的空間浪費的問題(可以在sonClass的prototype中看到被屏蔽的繼承自父類的屬性) //4.寄生組合式繼承 //使用工廠函數將父元素的原型剝離出來多帶帶賦值給子元素的原型 function birth(f, s) { var prototype = Object(f.prototype) s.prototype = prototype s.prototype.constructor = s } //組合式繼承 /*var sonClass = function(name, sex, type) { supClass.call(this) this.type = type this.sex = sex this.name = name } birth(supClass, sonClass) var son1 = new sonClass("jay", "man", "goodman") son1.say() son1.sayHi()*/ //優點: 完美 //缺點: 實現困難
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101836.html
摘要:實現繼承的方法借用構造函數解決原型中包含引用類型所帶來的問題的過程中,使用借用構造函數偽造對象或經典繼承來實現繼承。 繼承 在ECMAScript中繼承主要是依靠原型鏈來實現的。 實現繼承的方法 利用原型讓一個引用類型繼承另一個引用類型的屬性和方法 什么是原型鏈 先要了解構造函數、原型、和實例的關系: 每一個構造函數都有一個原型對象,原型對象都包含一個指向構造函數的指針,實例都包含...
摘要:組合方式繼承終極版工商建設開心能分清是孩子還是父輩二狗的構造函數已指向圖示關鍵代碼創建對象的方法就是用原型鏈來連接的。也讓二狗有了確定的歸屬。 一、繼承原理 原型鏈不知道什么是原型鏈?來讀幾個關鍵詞: 哥歐 構 構造函數 構造函數 構造函數 實例 實例 實例 原型對象 原型對象 原型對象 prototype prototype prototype __proto__ __pro...
摘要:老明調用了從原型中繼承來的方法繼承到了當前對象的原型中調用了從原型中擴展來的方法構造繼承基本思想借用構造函數的基本思想就是利用或者把父類中通過指定的屬性和方法復制借用到子類創建的實例中。 1、原型鏈繼承 核心: 將父類的實例作為子類的原型 缺點: 父類新增原型方法/原型屬性,子類都能訪問到,父類一變其它的都變了 function Person (name) { ...
摘要:繼承方式一混入繼承繼承方式二原型繼承創建構造函數,并且將對象的地址賦值給構造函數的原型實現繼承恢復三角關系實例化的所有對象都擁有對象的屬性和方法繼承方式三混入加原型繼承方式四實現過程了一個新的對象,把傳入作為參數的那個對象設置給新創建的這個 繼承方式一:混入繼承 use strict; //object:A let Oa= { money: many money, r...
摘要:參與任何數值計算的結構都是,而且。。面向人類的理性事物,而不是機器信號。達到無刷新效果。的工作原理總是指向一個對象,具體是運行時基于函數的執行環境動態綁定的,而非函數被聲明時的環境。原型對象上有一個屬性,該屬性指向的就是構造函數。 1.JS面向對象的理解 面向對象的三大特點:繼承、封裝、多態 1、JS中通過prototype實現原型繼承 2、JS對象可以通過對象冒充,實現多重繼承, 3...
閱讀 3588·2021-09-13 10:28
閱讀 1937·2021-08-10 09:43
閱讀 1010·2019-08-30 15:44
閱讀 3178·2019-08-30 13:14
閱讀 1830·2019-08-29 16:56
閱讀 2938·2019-08-29 16:35
閱讀 2843·2019-08-29 12:58
閱讀 864·2019-08-26 13:46