摘要:繼承理論源于生活又高于生活在中繼承,和現(xiàn)實(shí)生活中繼承是相似的如兒子繼承父親財(cái)產(chǎn)子女的生理特性有父母的特性身高膚色性格等等只是一定比例上是這樣的,不是絕對(duì)的一樣中繼承方法有以下幾種本質(zhì)區(qū)別方法特別注意是本質(zhì)區(qū)別冒充繼承也稱(chēng)之為借用構(gòu)造函數(shù)這種
JS繼承
理論源于生活、又高于生活JS中繼承方法有以下幾種本質(zhì)區(qū)別方法(特別注意是本質(zhì)區(qū)別)
在JS中“繼承”,和現(xiàn)實(shí)生活中繼承是相似的
如:兒子繼承父親財(cái)產(chǎn)、子女的生理特性有父母的特性(身高、膚色、性格等等....)
只是一定比例上是這樣的,不是絕對(duì)的一樣
冒充繼承(也稱(chēng)之為借用構(gòu)造函數(shù))
這種方法實(shí)現(xiàn)原理主要是利用了call/apply
// 定義父“類(lèi)”(ES6之前JS中沒(méi)有嚴(yán)格意義上的“類(lèi)”概念) function Parent(name, age) { this.name = name this.age = age this.run = function () { console.log("run...") } } // 定義子”類(lèi)“ Student.prototype.sid=200 function Student(name, age, sex) { var _super = Parent // call方法強(qiáng)制更改this指向,注意這個(gè)方向只是單純的操作當(dāng)前this對(duì)象,并不會(huì)影響到其“原型對(duì)象” _super.call(this, name, age) delete _super this.sex=sex } var student=new Student("zs",20,"Male") console.log(student.name) // zs console.log(student.sid) // 200
原型鏈繼承
// 定義父“類(lèi)”(ES6之前JS中沒(méi)有嚴(yán)格意義上的“類(lèi)”概念) Parent.prototype.lastName="damon" function Parent() { this.lastName="pool" } // 定義子”類(lèi)“ // 子類(lèi)的原型指向父類(lèi)的一個(gè)實(shí)例對(duì)象 Student.prototype=new Parent() function Student() { } var student=new Student() // 查找過(guò)程是怎么樣的? /* 1、首先會(huì)在對(duì)象student自身身上查找, 2、如果找不到,則到原型上查找,那么student的原型是誰(shuí)? student.__proto__===Student.prototype 而Student.prototype=new Student也就是原型現(xiàn)在指向的是父類(lèi)的實(shí)例 3、所以到父類(lèi)的實(shí)例上去查找,如果找不到,再到父類(lèi)實(shí)例的原型上查找 4、如果找不到,則到原型的原型上查找,此時(shí)到了Object.prototype身上 Object.prototype.__proto__===null 5、如果找不到,則返回undefined */ console.log(student.lastName) // damon
尚未寫(xiě)完整,待續(xù)...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/95567.html
摘要:并且用驗(yàn)證了中一系列的實(shí)質(zhì)就是魔法糖的本質(zhì)。抽絲剝繭我們首先看的編譯結(jié)果這是一個(gè)自執(zhí)行函數(shù),它接受一個(gè)參數(shù)就是他要繼承的父類(lèi),返回一個(gè)構(gòu)造函數(shù)。 如果你已經(jīng)看過(guò)第一篇揭秘babel的魔法之class魔法處理,這篇將會(huì)是一個(gè)延伸;如果你還沒(méi)看過(guò),并且也不想現(xiàn)在就去讀一下,單獨(dú)看這篇也沒(méi)有關(guān)系,并不存在理解上的障礙。 上一篇針對(duì)Babel對(duì)ES6里面基礎(chǔ)class的編譯進(jìn)行了分析。這一篇將...
摘要:隨著函數(shù)使用場(chǎng)景的不同,而發(fā)生變化。是當(dāng)前執(zhí)行上下文中的一部分。在中新增了該方法也是強(qiáng)制更改指向。但是和的區(qū)別是更改后不會(huì)立即執(zhí)行,它會(huì)返回一個(gè)新函數(shù)。 this何意?在英文中this是一個(gè)人稱(chēng)代詞,表示這個(gè)的,具體指哪個(gè)?不確定,只有在具體的語(yǔ)境中才可確定,在編程語(yǔ)言中this也有同樣的類(lèi)似特性。在js中this是一個(gè)關(guān)鍵字,它不能被當(dāng)做變量、屬性,也不可以進(jìn)行賦值操作。this 隨...
摘要:中任務(wù)分類(lèi)同步異步同步任務(wù)異步任務(wù)中異步類(lèi)型定時(shí)任務(wù)網(wǎng)絡(luò)請(qǐng)求回調(diào)函數(shù)事件綁定只能傳入一個(gè)參數(shù)未完待續(xù) JS中任務(wù)分類(lèi) 同步 異步 同步任務(wù) 異步任務(wù) JS中異步類(lèi)型 定時(shí)任務(wù) 網(wǎng)絡(luò)請(qǐng)求 回調(diào)函數(shù) 事件綁定 Promise(resolve只能傳入一個(gè)參數(shù)) 未完待續(xù)...
閱讀 3587·2021-11-17 17:01
閱讀 3995·2021-11-08 13:12
閱讀 2556·2021-10-08 10:04
閱讀 776·2021-09-29 09:35
閱讀 1487·2021-09-26 10:12
閱讀 2201·2021-09-07 09:58
閱讀 2046·2019-08-30 15:55
閱讀 2198·2019-08-30 13:14