成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

原型繼承、構(gòu)造函數(shù)繼承、組合繼承法

rockswang / 1938人閱讀

摘要:組合繼承法把父對(duì)象方法掛載到父類(lèi)的原型對(duì)象上去,實(shí)現(xiàn)方法復(fù)用原型的構(gòu)造函數(shù)指向程序員

原型繼承
function Person(name,sex){
    this.name=name;
    this.sex=sex;
    this.friends = {lily:"female",lucy:"female"};
    this.showFriends=function(){
        var str = ""
        for(i in this.friends){
            str+=i +" "+this.friends[i] +",";
        }
        console.log("my friends:"+str);
    }
}
Person.prototype.hello=function(){
    console.log("hello:"+this.name);
}

var per1 =  new Person("A","male");
per1.hello();
per1.showFriends();


function Student(className){
    this.class = className;
}

Student.prototype = new Person("B","male");//原型繼承將子對(duì)象的原型對(duì)象指向父對(duì)象的實(shí)例 ; 缺點(diǎn):不能由子對(duì)象像父對(duì)象傳遞參數(shù),

var stu1 = new Student(1);//不能由子對(duì)象像父對(duì)象傳遞參數(shù),
stu1.name="C";
stu1.hello();
stu1.friends.C = "male";//2、對(duì)于引用型的屬性修改之后會(huì)印象其他的實(shí)例對(duì)象;
stu1.showFriends();//2、對(duì)于引用型的屬性修改之后會(huì)印象其他的實(shí)例對(duì)象;

console.log("stu1 instanceof Student: ");
console.log(stu1 instanceof Student);
console.log("stu1 instanceof Person: ");
console.log(stu1 instanceof Person);

var stu2 = new Student(2);
stu2.name="D";
stu2.hello();
stu2.showFriends();//2、對(duì)于引用型的屬性修改之后會(huì)印象其他的實(shí)例對(duì)象;

console.log("stu2 instanceof Student: ");
console.log(stu2 instanceof Student);
console.log("stu2 instanceof Person: ");
console.log(stu2 instanceof Person);

缺點(diǎn):1、不能由子對(duì)象像父對(duì)象傳遞參數(shù),2、對(duì)于引用型的屬性修改之后會(huì)印象其他的實(shí)例對(duì)象;
構(gòu)造函數(shù)繼承
//構(gòu)造函數(shù)繼承
function Teacher(name,sex,type){
    this.type=type;
    Person.call(this,name,sex);
}

var tea1 = new Teacher("E","female","數(shù)學(xué)");
//tea1.hello(); //報(bào)錯(cuò)沒(méi)有繼承到原型上的方法
tea1.friends.F = "male";
tea1.showFriends();

var tea2 = new Teacher("G","male","語(yǔ)文");
tea2.friends.H = "male";
tea2.showFriends();
console.log("tea2 instanceof Teacher: ")
console.log(tea2 instanceof Teacher);
console.log("tea2 instanceof Person: ")
console.log(tea2 instanceof Person);

缺點(diǎn):1、不能繼承父對(duì)象原型上的方法 2、每次實(shí)例化對(duì)象會(huì)重新構(gòu)建函數(shù),浪費(fèi)內(nèi)存。
組合繼承法
把父對(duì)象方法掛載到父類(lèi)的原型對(duì)象上去,實(shí)現(xiàn)方法復(fù)用
function Worker(name,sex,job){
    this.job = job;
    Person.call(this,name,sex)
}
Worker.prototype = new Person();
Worker.prototype.constructor = Worker;//原型的構(gòu)造函數(shù)指向worker

var wor1 = new Worker("I","female","程序員");
wor1.hello();
wor1.friends.J = "male";
wor1.showFriends();

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/102277.html

相關(guān)文章

  • JavaScript面向?qū)ο?--原型繼承

    摘要:因?yàn)檫@造成了繼承鏈的紊亂,因?yàn)榈膶?shí)例是由構(gòu)造函數(shù)創(chuàng)建的,現(xiàn)在其屬性卻指向了為了避免這一現(xiàn)象,就必須在替換對(duì)象之后,為新的對(duì)象加上屬性,使其指向原來(lái)的構(gòu)造函數(shù)。這個(gè)函數(shù)接收兩個(gè)參數(shù)子類(lèi)型構(gòu)造函數(shù)和超類(lèi)型構(gòu)造函數(shù)。 最近一直在研究js面向?qū)ο螅玩溊^承是一個(gè)難點(diǎn),下面是我對(duì)繼承的理解以下文章借鑒自CSDN季詩(shī)筱的博客 原型鏈繼承的基本概念: ES中描述了原型鏈的概念,并將原型鏈作為實(shí)現(xiàn)...

    vspiders 評(píng)論0 收藏0
  • js繼承的理解

    摘要:創(chuàng)建自定義的構(gòu)造函數(shù)之后,其原型對(duì)象只會(huì)取得屬性,其他方法都是從繼承來(lái)的。優(yōu)缺點(diǎn)寄生式繼承在主要考慮對(duì)象而不是創(chuàng)建自定義類(lèi)型和構(gòu)造函數(shù)時(shí),是十分有用的。 原文鏈接:https://kongchenglc.coding.me... 1.原型鏈 ??js的繼承機(jī)制不同于傳統(tǒng)的面向?qū)ο笳Z(yǔ)言,采用原型鏈實(shí)現(xiàn)繼承,基本思想是利用原型讓一個(gè)引用類(lèi)型繼承另一個(gè)引用類(lèi)型的屬性和方法。理解原型鏈必須先理...

    BlackFlagBin 評(píng)論0 收藏0
  • JavaScript繼承方式詳解

    摘要:可以通過(guò)構(gòu)造函數(shù)和原型的方式模擬實(shí)現(xiàn)類(lèi)的功能。原型式繼承與類(lèi)式繼承類(lèi)式繼承是在子類(lèi)型構(gòu)造函數(shù)的內(nèi)部調(diào)用超類(lèi)型的構(gòu)造函數(shù)。寄生式繼承這種繼承方式是把原型式工廠模式結(jié)合起來(lái),目的是為了封裝創(chuàng)建的過(guò)程。 js繼承的概念 js里常用的如下兩種繼承方式: 原型鏈繼承(對(duì)象間的繼承) 類(lèi)式繼承(構(gòu)造函數(shù)間的繼承) 由于js不像java那樣是真正面向?qū)ο蟮恼Z(yǔ)言,js是基于對(duì)象的,它沒(méi)有類(lèi)的概念。...

    Yangyang 評(píng)論0 收藏0
  • 淺談原型繼承、借助構(gòu)造函數(shù)、組合方式繼承

    摘要:想要解決這樣的問(wèn)題的話,可以借助構(gòu)造函數(shù)也可以叫做偽造對(duì)象或經(jīng)典繼承。這種方式實(shí)現(xiàn)非常簡(jiǎn)單,就是在子對(duì)象的構(gòu)造函數(shù)中調(diào)用父對(duì)象的構(gòu)造函數(shù)。 原型式繼承 原型式繼承,就是一定一個(gè)函數(shù),該函數(shù)中創(chuàng)建一個(gè)臨時(shí)性的構(gòu)造函數(shù),將作為參數(shù),傳入的對(duì)象作為這個(gè)構(gòu)造函數(shù)的原型,最后返回這個(gè)構(gòu)造函數(shù)的實(shí)例對(duì)象 /*定義函數(shù):用于實(shí)現(xiàn)對(duì)象之間的繼承 參數(shù): obj:表示繼承關(guān)系中的父級(jí)對(duì)象...

    wangjuntytl 評(píng)論0 收藏0
  • JavaScript系列--淺析原型鏈與繼承

    摘要:綜上所述有原型鏈繼承,構(gòu)造函數(shù)繼承經(jīng)典繼承,組合繼承,寄生繼承,寄生組合繼承五種方法,寄生組合式繼承,集寄生式繼承和組合繼承的優(yōu)點(diǎn)于一身是實(shí)現(xiàn)基于類(lèi)型繼承的最有效方法。 一、前言 繼承是面向?qū)ο螅∣OP)語(yǔ)言中的一個(gè)最為人津津樂(lè)道的概念。許多面對(duì)對(duì)象(OOP)語(yǔ)言都支持兩種繼承方式::接口繼承 和 實(shí)現(xiàn)繼承 。 接口繼承只繼承方法簽名,而實(shí)現(xiàn)繼承則繼承實(shí)際的方法。由于js中方法沒(méi)有簽名...

    draveness 評(píng)論0 收藏0
  • js繼承構(gòu)造函數(shù)繼承、原型繼承、組合繼承組合繼承優(yōu)化、寄生組合繼承

    摘要:創(chuàng)建子類(lèi)實(shí)例,可以向父類(lèi)構(gòu)造函數(shù)傳參數(shù)。修復(fù)如下其實(shí)方式組合繼承優(yōu)化核心通過(guò)這種方式,砍掉父類(lèi)的實(shí)例屬性,這樣在調(diào)用父類(lèi)的構(gòu)造函數(shù)的時(shí)候,就不會(huì)初始化兩次實(shí)例,避免組合繼承的缺點(diǎn)。優(yōu)點(diǎn)只調(diào)用一次父類(lèi)構(gòu)造函數(shù)。 2018.06.03 第一部分:導(dǎo)入 1、構(gòu)造函數(shù)的屬性 funcion A(name) { this.name = name; // 實(shí)例基本屬性 (該屬性,強(qiáng)調(diào)私有,...

    孫淑建 評(píng)論0 收藏0

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

0條評(píng)論

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