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

資訊專欄INFORMATION COLUMN

JavaScript實現類與繼承的方法(全面整理)

Near_Li / 1531人閱讀

摘要:定義類的種方法工廠方法構造函數方法原型方法大家可以看到這種方法有缺陷,類里屬性的值都是在原型里給定的。組合使用構造函數和原型方法使用最廣將構造函數方法和原型方法結合使用是目前最常用的定義類的方法。

JavaScript定義類的4種方法 工廠方法
function creatPerson(name, age) {
            
    var obj = new Object();

    obj.name = name;
    obj.age = age;

    obj.sayName = function() {
        window.alert(this.name);
    };
            
    return obj;
}
構造函數方法
function Person(name, age) {

    this.name = name;
    this.age = age;

    this.sayName = function() {
        window.alert(this.name);
    };
}
原型方法
function Person() {
        
}
        
Person.prototype = {
    constructor : Person,
    name : "Ning",
    age : "23",
    sayName : function() {
        window.alert(this.name);
    }
};

大家可以看到這種方法有缺陷,類里屬性的值都是在原型里給定的。

組合使用構造函數和原型方法(使用最廣)
function Person(name, age) {
    this.name = name;
    this.age = age;
}
        
Person.prototype = {
    constructor : Person, 
    sayName : function() {
        window.alert(this.name);
    }
};

將構造函數方法和原型方法結合使用是目前最常用的定義類的方法。這種方法的好處是實現了屬性定義和方法定義的分離。比如我可以創建兩個對象person1person2,它們分別傳入各自的name值和age值,但sayName()方法可以同時使用原型里定義的。

JavaScript實現繼承的3種方法 借用構造函數法(又叫經典繼承)
function SuperType(name) {

    this.name = name;

    this.sayName = function() {
        window.alert(this.name);
    };
}
        
function SubType(name, age) {

    SuperType.call(this, name); //在這里借用了父類的構造函數

    this.age = age;
}
對象冒充
function SuperType(name) {

    this.name = name;
    
    this.sayName = function() {
        window.alert(this.name);
    };
}
        
function SubType(name, age) {

    this.supertype = SuperType; //在這里使用了對象冒充
    this.supertype(name);

    this.age = age;
}
組合繼承(最常用)
function SuperType(name) {

    this.name = name;

}
        
SuperType.prototype = {
        
    sayName : function() {
        window.alert(this.name);
    }
};
        
function SubType(name, age) {
    
    SuperType.call(this, name); //在這里繼承屬性
    this.age = age;
}

SubType.prototype = new SuperType(); //這里繼承方法

組合繼承的方法是對應著我們用‘組合使用構造函數和原型方法’定義父類的一種繼承方法。同樣的,我們的屬性和方法是分開繼承的。

總結

以上就是常見的JavaScript中面向對象編程的幾種實現,歡迎大家補充與指正。

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

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

相關文章

  • 50道JavaScript基礎面試題(附答案)

    摘要:事件中屬性等于。響應的狀態為或者。同步在上會產生頁面假死的問題。表示聲明的變量未初始化,轉換為數值時為。但并非所有瀏覽器都支持事件捕獲。它由兩部分構成函數,以及創建該函數的環境。 1 介紹JavaScript的基本數據類型Number、String 、Boolean 、Null、Undefined Object 是 JavaScript 中所有對象的父對象數據封裝類對象:Object、...

    huaixiaoz 評論0 收藏0
  • php面向對象詳解

    摘要:前言自從進入版本以來,開始全面地支持面向對象編程。好了,進入正題,面向對象的三大特性分別是封裝性,繼承性以及多態性,使用面向對象開發,讓我們的程序可維護以及擴展性大大提高。 showImg(https://segmentfault.com/img/remote/1460000012257579?w=1920&h=1080); 前言 自從php進入5.0版本以來,PHP開始全面地支持面向...

    xingpingz 評論0 收藏0
  • javascript類與繼承

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

    impig33 評論0 收藏0
  • 談談我對面向對象以及類與對象理解

    showImg(https://segmentfault.com/img/remote/1460000007103938?w=391&h=247); 文章最初發表于我的個人博客非典型性程序猿 對于剛接觸JAVA或者其他面向對象編程語言的朋友們來說,可能一開始都很難理解面向對象的概念以及類和對象的關系。筆者曾經帶過一個短期培訓班教授java入門基礎,在最后結束課程的時候,還有很多同學不太理解面向對象...

    walterrwu 評論0 收藏0
  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0

發表評論

0條評論

Near_Li

|高級講師

TA的文章

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