中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

創建JavaScript對象的方式有哪些

發布時間:2022-09-27 10:48:07 來源:億速云 閱讀:124 作者:iii 欄目:web開發

這篇文章主要介紹“創建JavaScript對象的方式有哪些”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“創建JavaScript對象的方式有哪些”文章能幫助大家解決問題。

這里創建對象,主要介紹四種方式: 工廠模式、構造函數模式、原型模式、組合使用構造函數模式和原型模式。

1.工廠模式

工廠模式是用函數來封裝創建對象的細節,在函數里面創建對象并返回對象,就有些像工廠里的流水線一樣。

function createPerson(name,age,job){    var o = new Object();
    o.name = name;
    o.age = age;
    o.job = job;
    o.sayname = function(){
        alert(this.name);
    };    return o;
}var person1 = createPerson("a",29,"cc");var person2 = createPerson("b",26,"cc");

但是工廠模式有個缺點,就是對象識別問題,即它不知道一個對象的類型。

2.構造函數模式

構造函數模式,即通過給構造函數傳遞不同的參數,然后調用構造函數來創建不同對象。

function Person(name,age,job){    this.name = name;    this.age = age;    this.job = job;    this.sayname = function(){
        alert(this.name);
    };
}var person1 = new Person("a",29,"cc");var person2 = new Person("b",26,"cc");

使用自定義的構造函數,可以將它的實例標識為一種特定的類型,這正是構造函數模式勝過工廠模式的地方。

比如(instanceof用于檢測對象類型):

person1 instanceof Person  //true    這里可以看到person1也是Person的實例,而工廠模式沒有能具體檢測對象類型的這一特定person1 instanceof Object //true    所有對象均繼承自Object

構造函數模式的主要問題,就是每個方法都要在每個實例對象上重新創建一遍,j即使是同名方法或者兩個方法的作用一樣,而不同實例對象上的同名方法其實是不一樣的,這樣就造成了一種冗余,比如:

person1.sayname != person2.sayname

3.原型模式

有關原型和原型鏈的知識已經在點擊打開鏈接介紹過了,這里不作過多介紹。

使用原型對象的好處就是,可以讓所有對象實例共享它所包含的屬性和方法。

function Person(){}
Person.prototype.name="a";
Person.prototype.age="29";
Person.prototype.job="cc";
Person.prototype.sayname = function(){
        alert(this.name);
};var person1 = new Person();var person2 = new Person();
這樣person1.sayname == person2.sayname

這樣一來,所有的屬性和方法都是大家(所有實例)共享的了,換句話說,person1和person2訪問的sayname和name等 都是同一個。

還有就是重寫原型的時候,切斷了現有原型與任何之前已存在的對象實例之間的聯系,它們引用的仍是最初的原型。可以通過在重寫原型里添加constructor:Person來建立新聯系。

原型模式的問題就是共享問題,在實例或原型上改變一下,在其他實例中都會相應的改變。這樣我們引入組合使用構造函數模式和原型模式。

4.組合使用構造函數模式和原型模式

組合使用中,構造函數模式用于定義實例自己的屬性,原型模式用于定于方法和共享的屬性。

function Person(name,age,job){    this.name = name;    this.age = age;    this.job = job;
}
Person.prototype = {    constructor: Person,    sayname: function(){
        alert(this.name);
    }
}var person1 = new Person("a",29,"cc");var person2 = new Person("b",26,"cc");

這種構造函數與原型混合的模式,是目前使用較多的。其它創建對象的方式還有動態原型模式、寄生構造函數模式、穩妥構造函數模式。

關于“創建JavaScript對象的方式有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

股票| 安图县| 揭东县| 响水县| 沈阳市| 莫力| 年辖:市辖区| 神木县| 巩义市| 凤台县| 塘沽区| 平武县| 济阳县| 毕节市| 巫溪县| 洛隆县| 鄱阳县| 盐源县| 嘉义县| 太和县| 罗源县| 临猗县| 新化县| 隆子县| 雅江县| 望城县| 弋阳县| 闽侯县| 吴旗县| 榆社县| 上杭县| 托克逊县| 万盛区| 宣武区| 蒙山县| 新巴尔虎右旗| 高尔夫| 仁寿县| 洮南市| 吴川市| 云南省|