亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript繼承總結(jié)

jas0n / 2728人閱讀

摘要:創(chuàng)建對象字面量對象構(gòu)造函數(shù)字面量字面量構(gòu)造函數(shù)繼承原型鏈繼承在睡覺正在吃就是把實(shí)例賦值給,也就是說。構(gòu)造函數(shù)繼承在睡覺正在吃構(gòu)造函數(shù)繼承可以通過或方法實(shí)現(xiàn)繼承。

1.創(chuàng)建對象

1.字面量對象
2.構(gòu)造函數(shù)
3.Object.create

//1.字面量
var obj={
    name: "字面量",
    show: function(){
        console.log(this.name)
    }
}
//2.構(gòu)造函數(shù)
function fun (name) {
    this.name=name
}
var obj=new fun("obj")
//3.Object.create
var obj={name: "obj"}
var obj=Object.create(obj)
2.JavaScript繼承 1.原型鏈繼承
function Parent(name){
    this.name=name
    this.sleep=function(){
        console.log(this.name + "在睡覺")
    }
}
Parent.prototype.eat=function(food){
    console.log(this.name + "正在吃" + food)
}
function Child(){}
Child.prototype=new Parent("Child")
Child.prototype.constructor=Child
var child=new Child()

Child.prototype=new Parent("Child")就是把Parent實(shí)例賦值給Child.prototype,也就是說new Child().__proto__===new Parent("Child")。

可以通過Child.prototype在原型對象上增加新的屬性或方法,也可以通過,child.__proto__在原型對象上添加新的方法和屬性。

缺點(diǎn):
1.原型對象上的屬性和方法是所有實(shí)例都可訪問的,而且一個(gè)實(shí)例改變了原型上的方法和屬性都會(huì)影響到其他實(shí)例。
2.創(chuàng)建子類實(shí)例時(shí),無法向父類構(gòu)造函數(shù)傳參。

2.構(gòu)造函數(shù)繼承
function Parent(name){
    this.name=name
    this.sleep=function(){    
        console.log(this.name + "在睡覺")
    }
}
Parent.prototype.eat=function(food){
    console.log(this.name + "正在吃" + food)
}

function Child(){
    Parent.call(this,"child")
}
Child.prototype.eyes=function(){console.log("eyes")}
var child=new Child()

構(gòu)造函數(shù)繼承可以通過call或apply方法實(shí)現(xiàn)繼承。這種方法不能繼承原型對象中的屬性和方法,只能繼承實(shí)例屬性和實(shí)例方法,但是可以向父類傳參。

3.組合繼承
function Parent(name){
    this.name=name
    this.sleep=function(){    
        console.log(this.name + "正在睡覺")
    }
}
Parent.prototype.eat=function(food){
    console.log(this.name + "正在吃" + food)
}
function Child(){
    Parent.call(this,"child")
}
Child.prototype.eyes=function(){console.log("eyes")}

Child.prototype=new Parent()
Child.prototype.constructor=Child 
var child=new Child()

組合繼承是比較好的繼承, 他是原型鏈繼承和構(gòu)造函數(shù)繼承的結(jié)合, 合理的利用了這兩種組合的特點(diǎn),既是子類的實(shí)例,也是父類的實(shí)例, 但有一個(gè)缺點(diǎn)就是調(diào)用了兩次構(gòu)造函數(shù)。

4.組合繼承優(yōu)化
function Parent(name){
    this.name=name
    this.sleep=function(){    
        console.log(this.name + "正在睡覺")
    }
}
Parent.prototype.eat=function(food){
    console.log(this.name + "正在吃" + food)
}
function Child(){
    Parent.call(this,"child")
}
Child.prototype = Object.create(Parent.prototype)
Child.prototype.constructor=Child 
var child=new Child()
5.寄生組合繼承
function Parent(name){
    this.name=name
    this.sleep=function(){    
        console.log(this.name + "正在睡覺")
    }
}
Parent.prototype.eat=function(food){
    console.log(this.name + "正在吃" + food)
}
function Child(){
    Parent.call(this,"child")
}
function f(){}
f.prototype=Parent.prototype
Child.prototype=new f()
Child.prototype.constructor=Child 
var child=new Child()

只調(diào)用一次父類的構(gòu)造函數(shù),避免了在子類原型上創(chuàng)建不必要的,多余的屬性。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/97297.html

相關(guān)文章

  • [原創(chuàng)] JavaScript中的繼承總結(jié)

    摘要:中繼承比較復(fù)雜,坑比較多,最近有點(diǎn)時(shí)間整理下,記錄下來。的繼承實(shí)現(xiàn)方式大概分類如下的兩大類,每一種實(shí)現(xiàn)都有自己的有點(diǎn)和缺點(diǎn),根據(jù)場景選擇吧通過修改原型鏈來來實(shí)現(xiàn)繼承通過復(fù)制父類來來實(shí)現(xiàn)繼承為了理解繼承的原型鏈的變化,我畫了原型鏈圖。 JS 中繼承比較復(fù)雜,坑比較多,最近有點(diǎn)時(shí)間整理下,記錄下來。 JS 的繼承實(shí)現(xiàn)方式大概分類如下的兩大類,每一種實(shí)現(xiàn)都有自己的有點(diǎn)和缺點(diǎn),根據(jù)場景選擇吧 ...

    sixgo 評(píng)論0 收藏0
  • javascript原型(容易犯糊涂點(diǎn)的總結(jié)

    摘要:犯渾的地方中的原型繼承幾乎是面試必問點(diǎn),然而真正透徹的理解它還是需要費(fèi)一番功夫的,等等看到腦子就昏掉了,有時(shí)候以為自己掌握了,但是沒過多久看到角度不同的講解時(shí)就又犯糊涂了犯渾點(diǎn)中的構(gòu)造函數(shù),實(shí)例與原型之間的關(guān)系。 在javascirpt中,每個(gè)對象都有一個(gè)指向它的原型對象的內(nèi)部鏈接,這個(gè)原型對象又有自己的原型,一級(jí)一級(jí)鏈接上去,直到某個(gè)對象的原型為null,從而實(shí)現(xiàn)了繼承。 犯渾的地方...

    dongfangyiyu 評(píng)論0 收藏0
  • JavaScript」js中的繼承方法總結(jié)

    摘要:缺點(diǎn)方法都在構(gòu)造函數(shù)中定義,每次創(chuàng)建實(shí)例都會(huì)創(chuàng)建一遍方法組合繼承組合繼承融合原型鏈繼承和構(gòu)造函數(shù)的優(yōu)點(diǎn),是中最常用的繼承模式然而組合繼承也有一個(gè)缺點(diǎn),就是會(huì)調(diào)用兩次父構(gòu)造函數(shù)。 1.前言 本文完整代碼指路我的GitHub,歡迎star。js中的繼承方式有很多種,以下僅列出部分。 2.原型鏈繼承 代碼如下: function Parent() { this.name = jche...

    Cristic 評(píng)論0 收藏0
  • 基于原型的JavaScript繼承 - 面向?qū)ο蟮?em>JavaScript - JavaScript核心

    摘要:基于原型的繼承誠惶誠恐的寫下這篇文章。無論是還是,都是面向?qū)ο蟮?。將這個(gè)新對象作為構(gòu)造函數(shù)的執(zhí)行上下文其指向這個(gè)對象,并執(zhí)行構(gòu)造函數(shù)返回這個(gè)對象原型繼承我們來定義一個(gè)簡單的類和它的原型我們在原型上定義了一個(gè)方法。 源碼: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/JavaScr...

    Acceml 評(píng)論0 收藏0
  • 基礎(chǔ)二:javascript面向?qū)ο?、?chuàng)建對象、原型和繼承總結(jié)(下)

    摘要:當(dāng)調(diào)用的構(gòu)造函數(shù)時(shí),在函數(shù)內(nèi)部又會(huì)調(diào)用的構(gòu)造函數(shù),又在新對象上創(chuàng)建了實(shí)例屬性和,于是這兩個(gè)屬性就屏蔽了原型中的同名屬性。 前言:這次對上篇收個(gè)尾,主要總結(jié)一下javascript的繼承。 1.原型鏈 js中原型鏈?zhǔn)菍?shí)現(xiàn)繼承的主要方法?;舅枷胧牵豪迷妥屢粋€(gè)引用類型繼承另一個(gè)引用類型的屬性和方法。我們來簡單回顧一下以前的內(nèi)容: 每個(gè)構(gòu)造函數(shù)都有一個(gè)原型對象 每個(gè)原型對象都包含一個(gè)指...

    617035918 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<