溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

javascript不使用new能夠創(chuàng)建對(duì)象嗎

發(fā)布時(shí)間:2021-06-24 09:41:37 來(lái)源:億速云 閱讀:337 作者:chen 欄目:web開(kāi)發(fā)

本篇內(nèi)容介紹了“javascript不使用new能夠創(chuàng)建對(duì)象嗎”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

javascript不使用new運(yùn)算符也可以創(chuàng)建對(duì)象,方法:1、使用“var objectName={屬性名1:值1,屬性名2:值2,...};”語(yǔ)句;2、使用“Object.create(原型對(duì)象,descriptors)”語(yǔ)句。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript不使用new創(chuàng)建對(duì)象的方法

對(duì)象直接量

使用直接量可以快速創(chuàng)建對(duì)象,也是最高效、最簡(jiǎn)便的方法。具體用法如下:

var objectName = {
    屬性名1 : 屬性值1,
    屬性名2 : 屬性值2,
    ...
    屬性名n : 屬性值n
};

在對(duì)象直接量中,屬性名與屬性值之間通過(guò)冒號(hào)進(jìn)行分隔,屬性值可以是任意類(lèi)型的數(shù)據(jù),屬性名可以是 JavaScript 標(biāo)識(shí)符,或者是字符串型表達(dá)式。屬性于屬性之間通過(guò)逗號(hào)進(jìn)行分隔,最后一個(gè)屬性末尾不需要逗號(hào)。

示例1

下面代碼使用對(duì)象直接量定義兩個(gè)對(duì)象。

var o = {  //對(duì)象直接量
    a : 1,  //定義屬性
    b : true  //定義屬性
}
var o1 = {  //對(duì)象直接量
    "a" : 1,  //定義屬性
    "b" : true  //定義屬性
}

示例2

屬性值可以是任意類(lèi)型的值。如果屬性值是函數(shù),則該屬性也稱(chēng)為方法。

var o = {  //對(duì)象直接量
    a : function () {  //定義方法
        return 1;
    }
}

示例3

如果屬性值是對(duì)象,可以設(shè)計(jì)嵌套結(jié)構(gòu)的對(duì)象。

var o = {  //對(duì)象直接量
    a : {  //嵌套對(duì)象
        b : 1
    }
}

示例4

如果不包含任何屬性,則可以定義一個(gè)空對(duì)象。

var o = {}  //定義一個(gè)空對(duì)象直接量

使用 Object.create

Object.create 是 ECMAScript 5 新增的一個(gè)靜態(tài)方法,用來(lái)創(chuàng)建一個(gè)實(shí)例對(duì)象。該方法可以指定對(duì)象的原型和對(duì)象特性。具體用法如下:

Object.create(prototype, descriptors)

參數(shù)說(shuō)明如下:

  • prototype:必須參數(shù),指定原型對(duì)象,可以為 null。

  • descriptors:可選參數(shù),包含一個(gè)或多個(gè)屬性描述符的 JavaScript 對(duì)象。屬性描述符包含數(shù)據(jù)特性和訪問(wèn)器特性,其中數(shù)據(jù)特性說(shuō)明如下。

  • value:指定屬性值。

  • writable:默認(rèn)為 false,設(shè)置屬性值是否可寫(xiě)。

  • enumerable:默認(rèn)為 false,設(shè)置屬性是否可枚舉(for/in)。

  • configurable:默認(rèn)為 false,設(shè)置是否可修改屬性特性和刪除屬性。

訪問(wèn)器特性包含兩個(gè)方法,簡(jiǎn)單說(shuō)明如下:

  • set():設(shè)置屬性值。

  • get():返回屬性值。

示例1

下面示例使用 Object.create定義一個(gè)對(duì)象,繼承 null,包含兩個(gè)可枚舉的屬性 size 和 shape,屬性值分別為 "large" 和 "round"。

var newObj = Object.create (null, {
    size : {  //屬性名
        value : "large",  //屬性值
        enumerable : true  //可以枚舉
    },
    shape : {  //屬性名
        value : "round",  //屬性值
        enumerable : true  //可以枚舉
    }
});
console.log(newObj.size);  //large
console.log(newObj.shape);  //round
console.log(Object.getPrototypeOf(newObj));  //null

示例2

下面示例使用 Object.create 定義一個(gè)與對(duì)象直接量具有相同原型的對(duì)象。

var obj = Object.create(Object.prototype, {  //繼承Obj.prototype原型對(duì)象
    x : {
        value : undefined,  //屬性值
        writable : true,  //可寫(xiě)
        configurable : true,  //可以配置
        enumerable : true  //可以枚舉
    }
});
console.log("obj.prototype = " + Object.getPrototypeOf(obj));  //"obj.prototype =[object, Object]"
Object.getPrototypeOf() 函數(shù)可獲取原始對(duì)象的原型。如果要獲取對(duì)象的屬性描述符,可以使用 Object.getOwnPropertyDescriptor() 函數(shù)。

示例3

下面示例定義一個(gè)對(duì)象,使用訪問(wèn)器屬性 b 來(lái)讀寫(xiě)數(shù)據(jù)屬性 a。

var obj = Object.create(Object.prototype, {
    a : {  //數(shù)據(jù)屬性a
        writable : true,
        value : "a"
    },
    b : {  //訪問(wèn)器屬性b
        get : function () {
            return this.a;
        },
        set : function (value) {
            this.a = value;
        },
    }
});
console.log(obj.a);  //"a"
console.log(obj.b);  //"a"
obj.b = 20;
console.log(obj.b);  //20

“javascript不使用new能夠創(chuàng)建對(duì)象嗎”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI