午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    javascript中定義類的方法詳解
    來源:易賢網(wǎng) 閱讀:750 次 日期:2015-02-12 11:36:45
    溫馨提示:易賢網(wǎng)小編為您整理了“javascript中定義類的方法詳解”,方便廣大網(wǎng)友查閱!

    這篇文章主要詳細介紹了javascript中定義類的方法的相關(guān)資料,需要的朋友可以參考下

    JS中定義類的方式有很多種:

    1、工廠方式

    代碼如下:

    function Car(){

    var ocar = new Object;

    ocar.color = "blue";

    ocar.doors = 4;

    ocar.showColor = function(){

    document.write(this.color)

    };

    return ocar;

    }

    var car1 = Car();

    var car2 = Car();

    調(diào)用此函數(shù)時將創(chuàng)建新對象,并賦予它所有的屬性和方法。使用此函數(shù)可以創(chuàng)建2個屬性完全相同的對象。當然我妹可以通過給它傳遞參數(shù)來改版這種方式。

    代碼如下:

    function Car(color,door){

    var ocar = new Object;

    ocar.color = color;

    ocar.doors = door;

    ocar.showColor = function(){

    document.write(this.color)

    };

    return ocar;

    }

    var car1 = Car("red",4);

    var car2 = Car("blue",4);

    car1.showColor() //output:"red"

    car2.showColor() //output:"blue"

    現(xiàn)在可以通過給函數(shù)傳遞不同的參數(shù)來得到具有不同值的對象。

    在前面的例子中,每次調(diào)用函數(shù)Car(),都要創(chuàng)建showcolor(),意味著每個對象都有一個自己的showcolor()方法。

    但是事實上,每個對象斗共享了同一個函數(shù)。

    雖然可以在函數(shù)外定義方法,然后通過將函數(shù)的屬性指向該方法。

    代碼如下:

    function showColor(){

    alert(this.color);

    }

    function Car(){

    var ocar = new Object();

    ocar.color = color;

    ocar.doors = door;

    ocar.showColor = showColor;

    return ocar;

    }

    但是這樣看起來不像是函數(shù)的方法。

    2、構(gòu)造函數(shù)方式

    構(gòu)造函數(shù)方式同工廠方式一樣簡單,如下所示:

    代碼如下:

    function Car(color,door){

    this.color = color;

    this.doors = door;

    this.showColor = function(){

    alert(this.color)

    };

    }

    var car1 = new Car("red",4);

    var car2 = new Car("blue",4);

    可以看到構(gòu)造函數(shù)方式在函數(shù)內(nèi)部沒有創(chuàng)建對象,是用this關(guān)鍵字。因為在調(diào)用構(gòu)造函數(shù)時已經(jīng)創(chuàng)建了對象,而在函數(shù)內(nèi)部只能用this來訪問對象屬性。

    現(xiàn)在用new來創(chuàng)建對象,看起來像那么回事了!但是它同工廠方式一樣。每次調(diào)用都會為對象創(chuàng)建自己的方法。

    3、原型方式

    該方式利用了對象的prototype屬性。首先用空函數(shù)創(chuàng)建類名,然后所有的屬性和方法都被賦予prototype屬性。

    代碼如下:

    function Car(){

    }

    Car.prototype.color = "red";

    Car.prototype.doors = 4;

    Car.prototype.showColor = function(){

    alert(this.color);

    }

    var car1 = new Car();

    var car2 = new Car();

    在這段代碼中,首先定義了一個空函數(shù),然后通過prototype屬性來定義對象的屬性。調(diào)用該函數(shù)時,原型的所有屬性都會立即賦予要創(chuàng)建的對象,所有該函數(shù)的對象存放的都是指向showColor()的指針,語法上看起來都屬于同一個對象。

    但是這個函數(shù)沒有參數(shù),不能通過傳遞參數(shù)來初始化屬性,必須要在對象創(chuàng)建后才能改變屬性的默認值。

    原型方式有個很嚴重的問題就是當屬性指向的是對象時,如數(shù)組。

    代碼如下:

    function Car(){

    }

    Car.prototype.color = "red";

    Car.prototype.doors = 4;

    Car.prototype.arr = new Array("a","b");

    Car.prototype.showColor = function(){

    alert(this.color);

    }

    var car1 = new Car();

    var car2 = new Car();

    car1.arr.push("cc");

    alert(car1.arr); //output:aa,bb,cc

    alert(car2.arr); //output:aa,bb,cc

    這里由于數(shù)組的引用值,Car的兩個對象指向的都是同一個數(shù)組,所以當在car1添加值后,在car2中也可以看到。

    聯(lián)合是用構(gòu)造函數(shù)/原型方式就可以像其他程序設計語言一樣創(chuàng)建對象,是用構(gòu)造函數(shù)定義對象的非函數(shù)屬性,用原型方式定義對象的方法。

    代碼如下:

    function Car(color,door){

    this.color = color;

    this.doors = door;

    this.arr = new Array("aa","bb");

    }

    Car.prototype.showColor(){

    alert(this.color);

    }

    var car1 = new Car("red",4);

    var car2 = new Car("blue",4);

    car1.arr.push("cc");

    alert(car1.arr); //output:aa,bb,cc

    alert(car2.arr); //output:aa,bb

    5、動態(tài)原型方式

    動態(tài)原型的方式同混合的構(gòu)造函數(shù)/原型方式原理相似。唯一的區(qū)別就是賦予對象方法的位置。

    代碼如下:

    function Car(color,door){

    this.color = color;

    this.doors = door;

    this.arr = new Array("aa","bb");

    if(typeof Car._initialized == "undefined"){

    Car.prototype.showColor = function(){

    alert(this.color);

    };

    Car._initialized = true;

    }

    }

    動態(tài)原型方式是使用一個標志來判斷是否已經(jīng)給原型賦予了方法。這樣可以保證該方法只創(chuàng)建一次

    6、混合工廠方式

    它的目的師創(chuàng)建假構(gòu)造函數(shù),只返回另一種對象的新實例。

    代碼如下:

    function Car(){

    var ocar = new Object();

    ocar.color = "red";

    ocar.doors = 4;

    ocar.showColor = function(){

    alert(this.color)

    };

    return ocar;

    }

    與工廠方式所不同的是,這種方式使用new運算符。

    以上就是全部的創(chuàng)建對象方法。目前使用最廣泛的就是混合構(gòu)造函數(shù)/原型方式,此外,動態(tài)原型方式也很流行。在功能上與構(gòu)造函數(shù)/原型方式等價。

    以上就是本文的全部內(nèi)容了,希望大家能夠喜歡。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看腳本欄目
    易賢網(wǎng)手機網(wǎng)站地址:javascript中定義類的方法詳解

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)