黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 創建JavaScript對象的幾種方式

創建JavaScript對象的幾種方式

更新時間:2021-08-30 11:15:55 來源:動力節點 瀏覽867次

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

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對象的幾種方式",希望對大家有幫助,想了解更多可查看JavaScript教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 成人毛片网站 | 一级成人生活片免费看 | 500第一导航亚洲精品导航 | 亚洲欧美国产中文 | 免费午夜影片在线观看影院 | 91在线亚洲精品专区 | 亚洲va乱码一区二区三区 | 69国产成人精品视频软件 | 久久精品成人免费网站 | 青草福利在线 | 日韩欧美亚洲一区 | 黄色一级片观看 | 欧日韩一区二区三区 | 亚洲欧洲日产国码在线观看 | 黄色中文字幕在线观看 | 一二三四视频社区在线网 | 一本一道dvd在线观看免费视频 | 一级做a爰性色毛片免费 | 久久er国产精品免费观看2 | jk制服啪啪网站 | 日批视频免费 | h 在线播放| 天天天天天天干 | 国产日韩欧美在线播放 | 日韩理论 | 国产精品久久久久天天影视 | 看黄网站在线播放 | 午夜香蕉视频 | 宅男在线午夜影院 | 天天色综合图片 | 亚洲黄色美女视频 | 日本三级视频 | 一本大道在线观看 | 亚洲激情综合 | xxx性欧美在线观看 youjizzxxxx18日本 | 三级伦理在线播放 | 看黄免费网站 | 欧美色综合网站 | 国产精品亚洲欧美日韩一区在线 | 国产特黄一级一片免费 | 九九伦理影院手机观看 |