JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍生的。Object对象主要用于将任意数据封装成对象形式。
所有主流浏览器均支持Object对象。更多细节信息请参考JavaScript Object对象的属性和方法。
语法
Object对象(或称之为Object()函数),其语法有以下两种:
用法一:充当Object对象的构造函数使用,用于结合new关键字构造一个新的Object对象。Object()会根据传入参数的类型返回一个对应类型的对象。
newObject([value])
用法二:当作普通函数使用,其行为与用法一(使用new关键字)完全一致,相当于用法一省略了new关键字。
Object([value])
参数
参数描述
value可选/任意类型需要包装为对象的值。
Object()将会根据参数value的数据类型,返回对应类型的对象:
如果value为基元数据类型Boolean、Number、String,则返回对应类型的对象,例如:Boolean对象、Number对象、String对象。
如果value本身为对象,则不对其作任何更改,返回其本身。
如果省略了value参数,或value为null、undefined,则返回自身无任何属性的Object对象。
返回值
Object()的返回值为Object类型。返回一个与给定值对应类型的对象。该对象包装了给定的参数。
示例&说明
Object()返回一个与指定参数对应类型的对象。
1、如果参数为基元数据,则返回对应类型的对象。例如:参数为原始字符串值(typeof该参数返回"string"),则返回对应的String对象。
2、如果参数自身就是对象(typeof该参数返回"object"或"function"),则不对其作任何更改,返回其本身。
3、如果未指定参数,或参数为null或undefined,则返回一个空对象。
varstr="CodePlayer";
document.writeln(typeofstr);// string
varobj=newObject(str);// 包装为String对象,实际上相当于 var obj = new String(str);
document.writeln(typeofobj);// object
document.writeln(obj.constructor===String);// true
document.writeln(obj instanceofString);// true
document.writeln(obj instanceofObject);// true
varstrObj=newString("CodePlayer");
document.writeln(typeofstrObj);// object
varobj2=newObject(strObj);// strObj本身就是对象,直接返回该对象
document.writeln(obj2===strObj);// true
运行代码(其他代码请自行复制到演示页面运行)
请再参考下面一段示例代码:
// 基元数据类型 => 对应类型的对象
varstrObj=newObject("CodePlayer");// 返回一个String对象,相当于new String("CodePlayer");
varnumObj=newObject(18);// 返回一个Number对象,相当于new Number(18);
varboolObj=newObject(true);// 返回一个Boolean对象,相当于new Boolean(true);
document.writeln(strObj instanceofString);// true
document.writeln(numObj instanceofNumber);// true
document.writeln(boolObj instanceofBoolean);// true
// 对象 => 对象本身
vararr=[2,3,5];
varregex=/^\d$/;
functiontest(){
alert("Hello World!");
}
vararrObj=newObject(arr);
varregObj=newObject(regex);
varfunObj=newObject(test);
document.writeln(arrObj===arr);// true
document.writeln(regObj===regex);// true
// 虽然typeof funObj返回的是"function",但它本身就是一个Function对象
document.writeln(funObj===test);// true
// null => 空对象
varobj=newObject(null);
document.writeln(obj instanceofObject);// true
在JS中,你还可以为创建的对象任意添加、修改或移除某些属性和方法(有些内置属性和方法可能无法被修改或移除)。
varobj=newObject();
obj.name="CodePlayer";
obj.age=18;
obj.sayHi=function(){
alert("Hello World!");
};
document.writeln(obj.age);// 18
// 移除age属性
deleteobj.age;
document.writeln(obj.age);// undefined
在JS中对象的属性可以通过两种方式访问:object.property和object["property"]。
varobj=newObject();
obj.name="CodePlayer";
obj.age=18;
obj.sayHi=function(){
alert("Hello World!");
};
// 包含特殊字符的属性只能以此方式访问
obj["foo-bar"]="包含特殊字符";
document.writeln(obj.age);// 18
document.writeln(obj['age']);// 18
document.writeln(obj["foo-bar"]);// 包含特殊字符
JS还支持以字面值形式创建一个自定义对象:{ property1:value1, property2:value2, propertyN:valueN }。
// 将上述自定义对象obj以字面值形式声明
varo={
// 所有的属性名称都可以加上引号
name:"CodePlayer",
age:18,
sayHi:function(){
alert("Hello World!");
},
"foo-bar":"包含特殊字符"
};
document.writeln(o.age);// 18
document.writeln(o['age']);// 18
document.writeln(o["foo-bar"]);// 包含特殊字符
网友评论