国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript的類與繼承

impig33 / 2030人閱讀

摘要:的類與繼承的類與一般的面向對象語言有很大的不同,類的標識是它的構造函數,下面先定義一個類顯然我們可以看出這兩個函數是不同的,雖然它們實現了相同的功能。利用構造函數來繼承上面的方法子類顯然無法繼承父類的原型函數,這樣不符合我們使用繼承的目的。

javascript的類與繼承

javascript的類與一般的面向對象語言有很大的不同,類的標識是它的構造函數,下面先定義一個類

var User=function(name){
    this.name=name;
};
User.getName=function(){return this.name;};
User.prototype.get_name=function(){return this.name};
user1=new User("kkk");
user2=new User("jjj");
user1.getName=function(){console.log("hello");};
user1.get_name=function(){console.log("hello");};

顯然我們可以看出這兩個函數是不同的,雖然它們實現了相同的功能。
接下來我們先解釋構造函數,當我們使用new操作符生成對象時,對象在進入函數之前就已經存在了,構造函數所完成的僅僅是初始化的工作。

每個javascript的函數都生而具有prototype這一屬性,它們的new 與prototype.constructor有關。有以下關系存在:

User.prototype.constructor===User
true

同時類的靜態方法如getName并不是一種值得推薦的方法,因為對于每一個被創建的對象都會創建相應的函數對象,方法在這里與其他的屬性并無任何不一致之處。

通過工廠方法創建類

var User=function(name){
    var user;
    user.name=name;
    user.getName=function(name){return user.name;};
    return user;
}();

通過工廠方法可以直接創建繼承了原型方法的對象,但是這樣得到的問題在于沒有prototype屬性,需要手動添加,不推薦這種方法。

下面開始講繼承的方法,先給出一種示例

function Vip(name,level){
    this.name=name;
    this.level=level;
}
Vip.prototype=User;
alert(Vip.prototype.construtor===Vip);//false

這樣顯然不行,對子類的任何方法的改變都會導致父類的方法改變,更嚴重的是繼承鏈遭到破壞。

利用構造函數來繼承

function Vip(name,level){
    User.call(this,name);
    this.level=level
}
User.prototype.hehe=function(){console.log("hehe");};
(new Vip("kf",2)).hehe();//error!

上面的方法子類顯然無法繼承父類的原型函數,這樣不符合我們使用繼承的目的。

function Vip(name,level){
    this.name=name;
    this.level=level;
}
Vip.prototype=new User();
Vip.prototype.constructor=Vip;

這是一種折衷的繼承方式,本質上把子類的所有對象綁定到父類的一個對象上,子類原型方法就是這個對象的一個屬性。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85429.html

相關文章

  • JavaScript基礎: 類與繼承

    摘要:類的方法相當于之前我們定義在構造函數的原型上。的構造函數中調用其目的就是調用父類的構造函數。是先創建子類的實例,然后在子類實例的基礎上創建父類的屬性。 前言   首先歡迎大家關注我的Github博客,也算是對我的一點鼓勵,畢竟寫東西沒法獲得變現,能堅持下去也是靠的是自己的熱情和大家的鼓勵。    許久已經沒有寫東西了,因為雜七雜八的原因最近一直沒有抽出時間來把寫作堅持下來,感覺和跑步一...

    liuchengxu 評論0 收藏0
  • TS 類與接口

    摘要:二正文中與的區別接口只聲明成員方法,不做實現。在中,我們可以采用全新的基于類繼承的模式設計更優雅的語義化接口,這是因為中的可以繼承動態構造的類,這一點和其他的靜態聲明類的編程語言不同。 一 前言 1.在typescript上遇到過實例化對象的兩種寫法:implement和extends。extends很明顯就是ES6里面的類繼承,那么implement又是做什么的呢?它和extends...

    garfileo 評論0 收藏0
  • Python方法(二) - 類與繼承

    摘要:在類內部的方法中使用時。類的私有方法兩個下劃線開頭,聲明該方法為私有方法,不能在類地外部調用。先在本類中查找調用的方法,找不到才去基類中找。如果在繼承元組中列了一個以上的類,那么它就被稱作多重繼承。 類定義 類對象:創建一個類之后,可以通過類名訪問、改變其屬性、方法 實例對象:類實例化后,可以使用其屬性,可以動態的為實例對象添加屬性(類似javascript)而不影響類對象。 類...

    DevWiki 評論0 收藏0
  • JS中類與類的繼承

    摘要:首先捋清楚類和對象的關系類比如人類,指的是一個范圍對象比如某個人,指的是這個范圍中具體的對象中的作為構造函數時,就是一個類,通過操作符,可以返回一個對象。 JS中的類與類的繼承 我們知道,JS中沒有類或接口的概念,即不能直接定義抽象的類,也不能直接實現繼承。不過,為了編程的方便,我們可以在 JS 中模擬類和繼承的行為。首先捋清楚類和對象的關系: 類:比如人類,指的是一個范圍; ...

    Tangpj 評論0 收藏0
  • java學習(三) —— 面對對象

    摘要:前言是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。面對對象基本概述概述是基于面向過程的變成思想,是對面向過程的一種封裝。面對對象開發就是不斷的創建對象,使用對象,指揮對象做事情。面對對象設計其實就是在管理和維護對象之間的關系。 前言 java是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。 面對對象,主要包括:面向對象思想,類與對象及其使用,對象的內存圖,成...

    褰辯話 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<