首頁  >  文章  >  web前端  >  javascript不使用new可以建立物件嗎

javascript不使用new可以建立物件嗎

青灯夜游
青灯夜游原創
2021-06-23 18:29:043379瀏覽

javascript不使用new運算子也可以建立對象,方法:1、使用「var objectName={屬性名稱1:值1,屬性名稱2:值2,...};」語句;2 、使用「Object.create(原型物件,descriptors)」語句。

javascript不使用new可以建立物件嗎

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

javascript不使用new建立物件的方法

#物件直接量

使用直接量可以快速建立對象,也是最有效率、最簡單的方法。具體用法如下:

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

在物件直接量中,屬性名稱與屬性值之間透過冒號進行分隔,屬性值可以是任意類型的數據,屬性名稱可以是JavaScript 標識符,或是字串型表達式。屬性於屬性之間透過逗號分隔,最後一個屬性結尾不需要逗號。

範例1

下面程式碼使用物件直接量定義兩個物件。

var o = {  //对象直接量
    a : 1,  //定义属性
    b : true  //定义属性
}
var o1 = {  //对象直接量
    "a" : 1,  //定义属性
    "b" : true  //定义属性
}

範例2

屬性值可以是任意類型的值。如果屬性值是函數,則該屬性也稱為方法。

var o = {  //对象直接量
    a : function () {  //定义方法
        return 1;
    }
}

範例3

如果屬性值是對象,可以設計嵌套結構的對象。

var o = {  //对象直接量
    a : {  //嵌套对象
        b : 1
    }
}

範例4

如果不包含任何屬性,則可以定義一個空物件。

var o = {}  //定义一个空对象直接量

使用 Object.create

#Object.create 是 ECMAScript 5 新增的靜態方法,用來建立一個實例物件。此方法可以指定物件的原型和物件特性。具體用法如下:

Object.create(prototype, descriptors)

參數說明如下:

  • prototype:必須參數,指定原型對象,可以為 null。

  • descriptors:可選參數,包含一個或多個屬性描述符的 JavaScript 物件。屬性描述符包含資料特性和存取器特性,其中資料特性說明如下。

  • value:指定屬性值。

  • writable:預設為 false,設定屬性值是否可寫入。

  • enumerable:預設為 false,設定屬性是否可列舉(for/in)。

  • configurable:預設為 false,設定是否可修改屬性特性和刪除屬性。

存取器特性包含兩個方法,簡單說明如下:

  • set():設定屬性值。

  • get():傳回屬性值。

範例1

下面範例使用Object.create定義一個對象,繼承null,包含兩個可列舉的屬性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 定義一個與物件直接量具有相同原型的物件。

var obj = Object.create(Object.prototype, {  //继承Obj.prototype原型对象
    x : {
        value : undefined,  //属性值
        writable : true,  //可写
        configurable : true,  //可以配置
        enumerable : true  //可以枚举
    }
});
console.log("obj.prototype = " + Object.getPrototypeOf(obj));  //"obj.prototype =[object, Object]"
Object.getPrototypeOf() 函数可获取原始对象的原型。如果要获取对象的属性描述符,可以使用 Object.getOwnPropertyDescriptor() 函数。

範例3

下方範例定義一個對象,使用存取器屬性 b 來讀取寫入資料屬性 a。

var obj = Object.create(Object.prototype, {
    a : {  //数据属性a
        writable : true,
        value : "a"
    },
    b : {  //访问器属性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學習教學

#

以上是javascript不使用new可以建立物件嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn