亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

seasonley / 3010人閱讀

摘要:使外部調(diào)用時(shí)只要知道這個(gè)方法的存在多態(tà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é)合起來,有類的概念,通過類創(chuàng)建任意多個(gè)具有相同屬性和方法的對(duì)象

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

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

多態(tà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ì)象都需要寫出完整的定義語句,不便于創(chuàng)建大量相同類型的對(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ì)象。具體來說,抽象創(chuàng)建具體對(duì)象的過程。

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ù)可用來創(chuàng)建特定類型的對(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, "嘿嘿");

以上代碼:

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

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

沒有return語句。

以這種方式調(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://www.ezyhdfw.cn/yun/96747.html

相關(guān)文章

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

    摘要:在基于原型的面向?qū)ο蠓绞街校瑢?duì)象則是依靠構(gòu)造函數(shù)和原型構(gòu)造出來的。來看下面的例子優(yōu)點(diǎn)與單純使用構(gòu)造函數(shù)不一樣,原型對(duì)象中的方法不會(huì)在實(shí)例中重新創(chuàng)建一次,節(jié)約內(nèi)存。 我們所熟知的面向?qū)ο笳Z言如 C++、Java 都有類的的概念,類是實(shí)例的類型模板,比如Student表示學(xué)生這種類型,而不表示任何具體的某個(gè)學(xué)生,而實(shí)例就是根據(jù)這個(gè)類型創(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è)過程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問題,沒有普適性,意思就是說我要為世界上(程序中)的所有使用到的對(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è)過程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問題,沒有普適性,意思就是說我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...

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

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

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

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

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

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

0條評(píng)論

閱讀需要支付1元查看
<