js中的繼承問題

來源:互聯網
上載者:User

標籤:傳遞參數   自己   不能   log   push   通過   cti   成員   添加   

1、繼承的概念:把別人的拿過來變成自己的,但自己不受影響。2、js中最基本的繼承就是原型繼承。3、原型繼承:通過修改子級建構函式的prototype指向父級建構函式的執行個體對象。    function Animal(name){        this.name=name;        this.favor=[‘eating‘,‘sleeping‘];    }    Cat.prototype=new Animal(‘Kitty‘);    function Cat(color){        this.color=color;    }    var cat=new Cat(‘blue‘);    cat.favor.push(‘swimming‘);    var cat1=new Cat(‘pink‘);    console.log(cat.name+cat.color+cat.favor);    console.log(cat1.name+cat1.color+cat1.favor); 原型繼承的缺點:(1)不能父級建構函式傳遞參數。在這裡我新n建立了一個Cat的執行個體函數,但是這個函數裡面的name仍然是Kitty。(2)父級建構函式中的參考型別的資料會被自己建構函式執行個體共用。在cat的favor裡面添加了一個swimming,但是cat1也多出了一個swimming 4、借用建構函式繼承目的:把父級所有額屬性繼承過來。function Animal(name){        this.name=name;        this.favor=[‘eating‘,‘sleeping‘];    }Animal.prototype.say=function(){        console.log(‘hello‘);    }//這個行為沒有繼承    function Cat(color,name){        Animal.call(this,name)        this.color=color;    }    var cat=new Cat(‘blue‘,‘Tom‘);    cat.favor.push(‘swimming‘);    var cat1=new Cat(‘pink‘,‘Candy‘);       cat.say()    console.log(cat.name+‘===‘+cat.color+‘===‘+cat.favor);    cat1.say()    console.log(cat1.name+‘===‘+cat1.color+‘===‘+cat1.favor);借用建構函式繼承方式解決了原型繼承的兩個缺點,但又有了新的問題,無法繼承父級建構函式原型中的成員。 5、組合繼承  function Animal(name){        this.name=name;        this.favor=[‘eating‘,‘sleeping‘];    }    Animal.prototype.say=function(){        console.log(‘hello‘);    }    function Cat(color,name){        Animal.call(this,name)        this.color=color;    }    Cat.prototype=new Animal();    var cat=new Cat(‘blue‘,‘Tom‘);    cat.favor.push(‘swimming‘);    var cat1=new Cat(‘pink‘,‘Candy‘);    cat.say()    console.log(cat.name+‘===‘+cat.color+‘===‘+cat.favor);    cat1.say()    console.log(cat1.name+‘===‘+cat1.color+‘===‘+cat1.favor);缺點:雖然這種方法解決了上訴所有的問題,單數還有一個小小的缺點。父級建構函式中的屬性會有冗餘(浪費記憶體)。

js中的繼承問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.