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

資訊專欄INFORMATION COLUMN

JavaScript創(chuàng)建對象

張巨偉 / 3449人閱讀

摘要:對象字面量小李我叫今年歲工廠模式但是,雖然構(gòu)造函數(shù)和對象字面量可以用來創(chuàng)建單個對象,但是這樣創(chuàng)建對象會產(chǎn)生大量的重復(fù)代碼。構(gòu)造函數(shù)模式在中的構(gòu)造函數(shù)可以創(chuàng)建特定類型的對象。

調(diào)用系統(tǒng)的構(gòu)造函數(shù)

創(chuàng)建一個最簡單的方式就是創(chuàng)建一個Object的實例,如下:

    // 1. 調(diào)用系統(tǒng)的構(gòu)造函數(shù)
    var person = new Object();

    // 添加屬性
    person.name = "小李";
    person.age = 22;
    person.sex = "F";

    // 添加方法
    person.eat = function () {
        console.log("我喜歡吃油炸榴蓮.")
    };

    person.play = function () {
        console.log("我喜歡玩電子游戲.")
    };

    person.introduce = function () {
        console.log("我叫" + this.name + ", 今年" + this.age + "歲.");
    };    
    
    person.introduce();        // 輸出:我叫小李, 今年22歲.

上面的代碼創(chuàng)建了一個名為object的對象,并為它添加了三個屬性和三個方法。

對象字面量
var person = {
    name: "小李",
    age: 22,
    sex: "F",
    introduce: function() {
        console.log("我叫" + this.name + ", 今年" + this.age + "歲.");
    }
}
工廠模式

但是,雖然Object構(gòu)造函數(shù)和對象字面量可以用來創(chuàng)建單個對象,但是這樣創(chuàng)建對象會產(chǎn)生大量的重復(fù)代碼。于是人們開始使用工廠模式。如下:

function createPerson(name, age, sex) {
    var object = new Object();
    person.name = "小李";
    person.age = 22;
    person.sex = "F";
    person.introduce = function () {
        console.log("我叫" + this.name + ", 今年" + this.age + "歲.");
    };
    
    return person;
}

var person0 = createPerson("小蘇", "21", "M");
var person1 = createPerson("鐵子", "27", "M");

函數(shù)createPerson()能夠根據(jù)接受的參數(shù)來構(gòu)建一個包含所有信息的Person對象??梢詿o數(shù)次地調(diào)用這個函數(shù),而每次它都會返回一個包含三個屬性和一個方法的對象。工廠模式雖然解決了創(chuàng)建多個類似對象導(dǎo)致的代碼大量重復(fù)的問題,但卻沒有解決對象識別的問題,即如何知道一個對象的類型。隨著JavaScript的發(fā)展,又一個新的模式出現(xiàn)了,那就是構(gòu)造函數(shù)模式。

構(gòu)造函數(shù)模式

在ECMAScript中的構(gòu)造函數(shù)可以創(chuàng)建特定類型的對象。像Object對象和Array對象這樣的原生構(gòu)造函數(shù),在運行的時候回自動出現(xiàn)在執(zhí)行環(huán)境中。此外我們也可以自定義構(gòu)造函數(shù),從而自定義對象的類型和方法。例如,前面的例子可以用自動以構(gòu)造函數(shù)重寫為以下的代碼:

function Person(name, age, sex) {
    this.name = name;
    this.age  = age;
    this.sex  = sex;
    
    this.introduce = function () {
        console.log("我叫" + this.name + ", 今年" + this.age + "歲.");
    };
}

var person0 = new Person("小蘇", "21", "M");
var person1 = new Person("鐵子", "27", "M");

要創(chuàng)建一個Person的新實例,必須使用new操作符。這種操作方式調(diào)用構(gòu)造函數(shù)實際上會經(jīng)歷一下4個過程:

創(chuàng)建一個新對象;

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

執(zhí)行構(gòu)造函數(shù)中的代碼;

返回這個新對象。

工廠模式和構(gòu)造函數(shù)的區(qū)別

構(gòu)造函數(shù)沒有顯式地創(chuàng)建對象;

構(gòu)造函數(shù)直接將屬性和方法賦給了this對象;

構(gòu)造函數(shù)沒有return語句,即沒有返回值;

構(gòu)造函數(shù)首字母需要大寫。

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/107675.html

相關(guān)文章

  • JavaScript中的面向對象(object-oriented)編程

    摘要:對象在中,除了數(shù)字字符串布爾值這幾個簡單類型外,其他的都是對象。那么在函數(shù)對象中,這兩個屬性的有什么區(qū)別呢表示該函數(shù)對象的原型表示使用來執(zhí)行該函數(shù)時這種函數(shù)一般成為構(gòu)造函數(shù),后面會講解,新創(chuàng)建的對象的原型。這時的函數(shù)通常稱為構(gòu)造函數(shù)。。 本文原發(fā)于我的個人博客,經(jīng)多次修改后發(fā)到sf上。本文仍在不斷修改中,最新版請訪問個人博客。 最近工作一直在用nodejs做開發(fā),有了nodejs,...

    JerryZou 評論0 收藏0
  • [譯] V8 使用者文檔

    摘要:注意句柄棧并不是調(diào)用棧中的一部分,但句柄域卻在棧中。一個依賴于構(gòu)造函數(shù)和析構(gòu)函數(shù)來管理下層對象的生命周期。對象模板用來配置將這個函數(shù)作為構(gòu)造函數(shù)而創(chuàng)建的對象。 如果你已經(jīng)閱讀過了上手指南,那么你已經(jīng)知道了如何作為一個單獨的虛擬機使用 V8 ,并且熟悉了一些 V8 中的關(guān)鍵概念,如句柄,域 和上下文。在本文檔中,還將繼續(xù)深入討論這些概念并且介紹其他一些在你的 C++ 應(yīng)用中使用 V8 的...

    lei___ 評論0 收藏0
  • JavaScript對象

    摘要:對象的分類內(nèi)置對象原生對象就是語言預(yù)定義的對象,在標(biāo)準(zhǔn)定義,有解釋器引擎提供具體實現(xiàn)宿主對象指的是運行環(huán)境提供的對象。不過類型是中所有類型的父級所有類型的對象都可以使用的屬性和方法,可以通過的構(gòu)造函數(shù)來創(chuàng)建自定義對象。 對象 javaScript中的對象,和其它編程語言中的對象一樣,可以比照現(xiàn)實生活中的對象來理解。在JavaScript中,一個對象可以是一個單獨擁有屬性和類型的實體。和...

    xavier 評論0 收藏0
  • JavaScript基礎(chǔ)之創(chuàng)建對象、原型、原型對象、原型鏈

    摘要:在最開始的時候,原型對象的設(shè)計主要是為了獲取對象的構(gòu)造函數(shù)。同理數(shù)組通過調(diào)用函數(shù)通過調(diào)用原型鏈中描述了原型鏈的概念,并將原型鏈作為實現(xiàn)繼承的主要方法。 對象的創(chuàng)建 在JavaScript中創(chuàng)建一個對象有三種方式??梢酝ㄟ^對象直接量、關(guān)鍵字new和Object.create()函數(shù)來創(chuàng)建對象。 1. 對象直接量 創(chuàng)建對象最直接的方式就是在JavaScript代碼中使用對象直接量。在ES5...

    wangbjun 評論0 收藏0
  • JavaScript 工廠函數(shù) vs 構(gòu)造函數(shù)

    摘要:當(dāng)談到語言與其他編程語言相比時,你可能會聽到一些令人困惑東西,其中之一是工廠函數(shù)和構(gòu)造函數(shù)。好的,讓我們用構(gòu)造函數(shù)做同樣的實驗。當(dāng)我們使用工廠函數(shù)創(chuàng)建對象時,它的指向,而當(dāng)從構(gòu)造函數(shù)創(chuàng)建對象時,它指向它的構(gòu)造函數(shù)原型對象。 showImg(https://segmentfault.com/img/bVbr58T?w=1600&h=900); 當(dāng)談到JavaScript語言與其他編程語言...

    RayKr 評論0 收藏0
  • JavaScript學(xué)習(xí)筆記(二) 對象與函數(shù)

    摘要:在中函數(shù)是一等對象,它們不被聲明為任何東西的一部分,而所引用的對象稱為函數(shù)上下文并不是由聲明函數(shù)的方式?jīng)Q定的,而是由調(diào)用函數(shù)的方式?jīng)Q定的。更為準(zhǔn)確的表述應(yīng)該為當(dāng)對象充當(dāng)函數(shù)的調(diào)用函數(shù)上下文時,函數(shù)就充當(dāng)了對象的方法。 引言:當(dāng)理解了對象和函數(shù)的基本概念,你可能會發(fā)現(xiàn),在JavaScript中有很多原以為理所當(dāng)然(或盲目接受)的事情開始變得更有意義了。 1.JavaScript...

    jeffrey_up 評論0 收藏0

發(fā)表評論

0條評論

張巨偉

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<