成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

js面向?qū)ο?工廠模式和構(gòu)造函數(shù)模式

seasonley / 2981人閱讀

摘要:使外部調(diào)用時(shí)只要知道這個(gè)方法的存在多態(tài)父類(lèi)的方法繼承的到子類(lèi)以后可以有不同的實(shí)現(xiàn)方式創(chuàng)建對(duì)象為了避免重復(fù)造輪子,產(chǎn)生大量的代碼,我們可以使用工廠模式和構(gòu)造函數(shù)模式。像和這樣的原生構(gòu)造函數(shù),在運(yùn)行時(shí)會(huì)自動(dòng)出現(xiàn)在執(zhí)行環(huán)境中。

什么是面向?qū)ο?/b>

把數(shù)據(jù)和行為(對(duì)數(shù)據(jù)的操作)結(jié)合起來(lái),有類(lèi)的概念,通過(guò)類(lèi)創(chuàng)建任意多個(gè)具有相同屬性和方法的對(duì)象

繼承:可以使子類(lèi)復(fù)用父類(lèi)公開(kāi)的變量、方法;

封裝:屏蔽一系列的細(xì)節(jié)。使外部調(diào)用時(shí)只要知道這個(gè)方法的存在;

多態(tài):父類(lèi)的方法繼承的到子類(lèi)以后可以有不同的實(shí)現(xiàn)方式;

var Person = {
    name: "wheeler",
    age: 25,
    inMeeting: function () {
        return "I am in Meeting";
    }
};
創(chuàng)建對(duì)象

為了避免重復(fù)造輪子,產(chǎn)生大量的代碼,我們可以使用工廠模式和構(gòu)造函數(shù)模式。
創(chuàng)建對(duì)象目前有兩種方式:

對(duì)象字面量

var Person = {
    name: "wheeler",
    age: 25,
    inMeeting: function () {
        return "I am in Meeting";
    }
};

優(yōu)點(diǎn):靈活方便
缺點(diǎn):每創(chuàng)建一個(gè)新的對(duì)象都需要寫(xiě)出完整的定義語(yǔ)句,不便于創(chuàng)建大量相同類(lèi)型的對(duì)象,不利于使用繼承等高級(jí)特性

使用new表達(dá)式

主要是配合構(gòu)造函數(shù)使用

function Person(name, age, dream){
    this.name = name;
    this.age = age;
    this.dream = dream;
    this.myDream =function () {
        alert(this.dream);
    }
};
person1 = new Person("wheeler", 25, "哈哈");
person2 = new Person("wheeler2", 26, "嘿嘿");
工廠模式

什么是工廠模式?就是像工廠一樣批量創(chuàng)建對(duì)象。具體來(lái)說(shuō),抽象創(chuàng)建具體對(duì)象的過(guò)程。

var createPerson = function (name, age, dream) {
    var person = {
        name: name,
        age: age,
        dream: function () {
            return dream;
        }
    };
    return person;

};
var person1 = createPerson("wheeler", 25, "哈哈");
var person2 = createPerson("wheeler2", 26, "嘿嘿");
構(gòu)造函數(shù)模式

ECMAScript 中的構(gòu)造函數(shù)可用來(lái)創(chuàng)建特定類(lèi)型的對(duì)象。像Object和Array這樣的原生構(gòu)造函數(shù),在運(yùn)行時(shí)會(huì)自動(dòng)出現(xiàn)在執(zhí)行環(huán)境中。

function Person(name, age, dream){
    this.name = name;
    this.age = age;
    this.dream = dream;
    this.myDream =function () {
        alert(this.dream);
    }
};
var person1 = new Person("wheeler", 25, "哈哈");
var person2 = new Person("wheeler2", 26, "嘿嘿");

以上代碼:

沒(méi)有顯式地創(chuàng)建對(duì)象;

直接將屬性和方法賦給了this對(duì)象;

沒(méi)有return語(yǔ)句。

以這種方式調(diào)用構(gòu)造函數(shù)實(shí)際上會(huì)經(jīng)歷以下4個(gè)步驟:

創(chuàng)建一個(gè)新對(duì)象;

將構(gòu)造函數(shù)的作用域賦給新對(duì)象(因此this就指向了這個(gè)新對(duì)象);

執(zhí)行構(gòu)造函數(shù)中的代碼(為這個(gè)新對(duì)象添加屬性);

返回新對(duì)象。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96747.html

相關(guān)文章

  • JS面向對(duì)象編程之封裝

    摘要:在基于原型的面向?qū)ο蠓绞街?,?duì)象則是依靠構(gòu)造函數(shù)和原型構(gòu)造出來(lái)的。來(lái)看下面的例子優(yōu)點(diǎn)與單純使用構(gòu)造函數(shù)不一樣,原型對(duì)象中的方法不會(huì)在實(shí)例中重新創(chuàng)建一次,節(jié)約內(nèi)存。 我們所熟知的面向?qū)ο笳Z(yǔ)言如 C++、Java 都有類(lèi)的的概念,類(lèi)是實(shí)例的類(lèi)型模板,比如Student表示學(xué)生這種類(lèi)型,而不表示任何具體的某個(gè)學(xué)生,而實(shí)例就是根據(jù)這個(gè)類(lèi)型創(chuàng)建的一個(gè)具體的對(duì)象,比如zhangsan、lisi,由...

    YFan 評(píng)論0 收藏0
  • JavaScript面向對(duì)象OOM 2(JavaScript 創(chuàng)建對(duì)象工廠模式構(gòu)造函數(shù)模式

    摘要:都是構(gòu)造函數(shù)模式創(chuàng)建的原生構(gòu)造函數(shù)。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象經(jīng)歷了以下四個(gè)過(guò)程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡(jiǎn)單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問(wèn)題,沒(méi)有普適性,意思就是說(shuō)我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...

    you_De 評(píng)論0 收藏0
  • JavaScript面向對(duì)象OOM 2(JavaScript 創(chuàng)建對(duì)象工廠模式構(gòu)造函數(shù)模式

    摘要:都是構(gòu)造函數(shù)模式創(chuàng)建的原生構(gòu)造函數(shù)。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象經(jīng)歷了以下四個(gè)過(guò)程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡(jiǎn)單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問(wèn)題,沒(méi)有普適性,意思就是說(shuō)我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...

    liuchengxu 評(píng)論0 收藏0
  • js中的面向對(duì)象入門(mén)

    摘要:簡(jiǎn)單來(lái)理解對(duì)象就是由屬性和方法來(lái)組成的面向?qū)ο蟮奶攸c(diǎn)封裝對(duì)于一些功能相同或者相似的代碼,我們可以放到一個(gè)函數(shù)中去,多次用到此功能時(shí),我們只需要調(diào)用即可,無(wú)需多次重寫(xiě)。 什么是對(duì)象 我們先來(lái)看高程三中是如何對(duì)對(duì)象進(jìn)行定義的 無(wú)序?qū)傩缘募希鋵傩钥梢园ɑ局?、?duì)象或者函數(shù),對(duì)象是一組沒(méi)有特定順序的的值。對(duì)象的沒(méi)個(gè)屬性或方法都有一個(gè)俄名字,每個(gè)名字都映射到一個(gè)值。 簡(jiǎn)單來(lái)理解對(duì)象就是由屬...

    sihai 評(píng)論0 收藏0
  • JavaScript面向對(duì)象 - 創(chuàng)建對(duì)象(上)

    摘要:對(duì)象字面量創(chuàng)建對(duì)象張三學(xué)生這種方式的好處顯而易見(jiàn),就是解決了之前的缺點(diǎn)。構(gòu)造函數(shù)模式張三學(xué)生李四學(xué)生與之前工廠模式的方法對(duì)比變量名首字母大寫(xiě)了在函數(shù)內(nèi)沒(méi)有顯式的創(chuàng)建及返回對(duì)象而使用了創(chuàng)建時(shí)使用了關(guān)鍵字。 面向?qū)ο笫荍S的重點(diǎn)與難點(diǎn),但也是走向掌握J(rèn)S的必經(jīng)之路,有很多的文章或書(shū)籍中都對(duì)其進(jìn)行了詳細(xì)的描述,本沒(méi)有必要再寫(xiě)這些,但是對(duì)于學(xué)習(xí)來(lái)說(shuō),講給別人聽(tīng)對(duì)自己來(lái)說(shuō)是一種更好的受益方式。我...

    sourcenode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<