html5创建对象的方法,JS创建对象(3种方式)

在 JavaScript 中创建对象的方式有 3 种,简单介绍如下。

构造对象

使用 new 运算符调用构造函数,可以构造一个实例对象。具体用法如下:

var objectName = new functionName(args);

参数说明如下:

objectName:返回的实例对象。

functionName:构造函数,与普通函数基本相同,但是不需要 return 返回值,返回实例对象,在函数内可以使用 this 预先访问。

args:实例对象初始化配置参数列表。

示例

下面示例使用不同类型的构造函数定义各种实例。

var o = new Object(); //定义一个空对象

var a = new Array(); //定义一个空数组

var f = new Function(); //定义一个空函数

对象直接量

使用直接量可以快速创建对象,也是最高效、最简便的方法。具体用法如下:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值