站長資訊網
        最全最豐富的資訊網站

        javascript不使用new可以創建對象嗎

        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

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久精品国产精品青草app| 亚洲国产精品一区二区三区久久| 欧美国产亚洲精品高清不卡| 欧美精品区一级片免费播放| 亚洲精品色午夜无码专区日韩| 2022免费国产精品福利在线| 精品97国产免费人成视频| 国产AV国片精品| 日韩精品无码永久免费网站| 老司机99精品99| 国产精品亚洲片在线| 老年人精品视频在线| 欧美一区二区精品久久| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 亚洲精品视频久久久| 国产韩国精品一区二区三区| 99香蕉国产精品偷在线观看| 中文字幕乱码中文乱码51精品| 亚洲国产精品国自产拍电影| 久久精品国产亚洲AV香蕉| 欧美日韩专区麻豆精品在线 | 亚洲av永久无码精品漫画| 国产精品日韩欧美久久综合| 久久精品www人人爽人人| 亚洲国产成人乱码精品女人久久久不卡| 99爱在线精品免费观看| 久久e热在这里只有国产中文精品99 | 男女男精品网站免费观看| 国产精品片在线观看手机版| 97视频在线精品国自产拍| 亚洲精品国产成人专区| 久久青青草原国产精品免费| 国语自产拍精品香蕉在线播放| 国产午夜精品久久久久免费视| 久久久精品国产sm调教网站| 久久精品黄AA片一区二区三区| 精品无人区一区二区三区| 孩交VIDEOS精品乱子| 国产欧美亚洲精品A| 99久久精品毛片免费播放| 国产精品欧美亚洲韩国日本不卡|