Javascript基礎與面向對象基礎~第四講 Javascript中的類對象


回到目錄 

  今天來說JS中如何實現類(class),事實上本應該昨天晚上寫的,可我失言了,在些說一聲“抱歉”!JS中的類是JS面向對象的基礎,也是我最拿手的東西,你寫的代碼能否提高一個層次,一般是從這點上看出來的。

占占對類的定義:

類是對現實中的事物的抽象,一個類一般由屬性和方法構成,屬性是一些固定的信息,而方法是類的某種行為,類往往用來抽象一些復雜的對象,類與類這間可以進行繼承,一般通過JS的function實現,JS中的類對象是實現JS面向對象的基礎。

占占對結構體的定義:

一個結構體也是對現實事物的一種抽象,它用來表示邏輯簡單的對象,一般通過JS的object對象實現

實現結構體的代碼:

      //簡單結構體對象
        var Animal = {
            Name: "動物",
            Type: "",
            Food: ["草", "肉"],
            Print: function () {
                console.log("名稱:" + this.Name + ",類型:" + this.Type + ",食物:" + this.Food);
            }
        };
        Animal.Print();//調用

實現復雜的類的代碼:

     //復雜的類型對象
        var AnimalFun = function (name, type) {
            this.Name = name;
            this.Type = type;
            this.Food = ["草", "肉"];
            this.Print = function () {
                console.log("名稱:" + this.Name + ",類型:" + this.Type + ",食物:" + this.Food);
            }
        };
        var animalFun = new AnimalFun();
        animalFun.Print();

子類去繼承父類,但復寫父類的屬性,調用父類的方法,代碼如下:

     //子類可以繼承父類,並可以復寫它的屬性
        var Dog = function (name, type, food) {
            //調用父類構造方法,並傳遞name參數  
            AnimalFun.call(this, name, type);
            //復寫屬性  
            this.Food = food;
        }

        //將Dog的原型鏈指向AnimalFun對象  
        Dog.prototype = new AnimalFun();
        //重置constructor屬性為Student類,由於設置了Student類的prototype為Person時  
        //擦除了constructor屬性  
        Dog.prototype.constructor = Dog;
        //實例化Dog類  
        var s = new Dog('狗', '低級動物', '肉');
        //調用父類的方法  
        s.Print(); //結果:名稱:狗,類型:低級動物,食物:肉

小知識:JS實現類的繼承的機制是這樣的:

在子類構造函數(constructor)中調用父類構造函數(父類.call()).

修改子類prototype(原型鏈)屬性為父類的實例.(prototype一般用來實現對函數的擴展,Dog.prototype = new AnimalFun();表示對父類AnimalFun進行擴展)

重置子類的prototype的constructor屬性為子類.

感謝您的閱讀!

回到目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM