JavaScript中的Object對(duì)象橡淑,是JS中所有對(duì)象的基類咆爽,也就是說JS中的所有對(duì)象都是由Object對(duì)象衍生的。Object對(duì)象主要用于將任意數(shù)據(jù)封裝成對(duì)象形式斗埂。
所有主流瀏覽器均支持Object對(duì)象。更多細(xì)節(jié)信息請(qǐng)參考JavaScript Object對(duì)象的屬性和方法呛凶。
語法
Object對(duì)象(或稱之為Object()函數(shù)),其語法有以下兩種:
用法一:充當(dāng)Object對(duì)象的構(gòu)造函數(shù)使用模闲,用于結(jié)合new關(guān)鍵字構(gòu)造一個(gè)新的Object對(duì)象。Object()會(huì)根據(jù)傳入?yún)?shù)的類型返回一個(gè)對(duì)應(yīng)類型的對(duì)象尸折。
newObject([value])
用法二:當(dāng)作普通函數(shù)使用,其行為與用法一(使用new關(guān)鍵字)完全一致实夹,相當(dāng)于用法一省略了new關(guān)鍵字。
Object([value])
參數(shù)
參數(shù)描述
value可選/任意類型需要包裝為對(duì)象的值贮配。
Object()將會(huì)根據(jù)參數(shù)value的數(shù)據(jù)類型,返回對(duì)應(yīng)類型的對(duì)象:
如果value為基元數(shù)據(jù)類型Boolean泪勒、Number宴猾、String圆存,則返回對(duì)應(yīng)類型的對(duì)象仇哆,例如:Boolean對(duì)象、Number對(duì)象讹剔、String對(duì)象。
如果value本身為對(duì)象陌兑,則不對(duì)其作任何更改由捎,返回其本身兔综。
如果省略了value參數(shù)狞玛,或value為null、undefined心肪,則返回自身無任何屬性的Object對(duì)象。
返回值
Object()的返回值為Object類型贰镣。返回一個(gè)與給定值對(duì)應(yīng)類型的對(duì)象呜象。該對(duì)象包裝了給定的參數(shù)碑隆。
示例&說明
Object()返回一個(gè)與指定參數(shù)對(duì)應(yīng)類型的對(duì)象蹬音。
1、如果參數(shù)為基元數(shù)據(jù)著淆,則返回對(duì)應(yīng)類型的對(duì)象。例如:參數(shù)為原始字符串值(typeof該參數(shù)返回"string")永部,則返回對(duì)應(yīng)的String對(duì)象。
2懦砂、如果參數(shù)自身就是對(duì)象(typeof該參數(shù)返回"object"或"function"),則不對(duì)其作任何更改荞膘,返回其本身玉工。
3、如果未指定參數(shù)遵班,或參數(shù)為null或undefined,則返回一個(gè)空對(duì)象狭郑。
varstr="CodePlayer";
document.writeln(typeofstr);// string
varobj=newObject(str);// 包裝為String對(duì)象,實(shí)際上相當(dāng)于 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本身就是對(duì)象微服,直接返回該對(duì)象
document.writeln(obj2===strObj);// true
運(yùn)行代碼(其他代碼請(qǐng)自行復(fù)制到演示頁面運(yùn)行)
請(qǐng)?jiān)賲⒖枷旅嬉欢问纠a:
// 基元數(shù)據(jù)類型 => 對(duì)應(yīng)類型的對(duì)象
varstrObj=newObject("CodePlayer");// 返回一個(gè)String對(duì)象缨历,相當(dāng)于new String("CodePlayer");
varnumObj=newObject(18);// 返回一個(gè)Number對(duì)象以蕴,相當(dāng)于new Number(18);
varboolObj=newObject(true);// 返回一個(gè)Boolean對(duì)象,相當(dāng)于new Boolean(true);
document.writeln(strObj instanceofString);// true
document.writeln(numObj instanceofNumber);// true
document.writeln(boolObj instanceofBoolean);// true
// 對(duì)象 => 對(duì)象本身
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"辛孵,但它本身就是一個(gè)Function對(duì)象
document.writeln(funObj===test);// true
// null => 空對(duì)象
varobj=newObject(null);
document.writeln(obj instanceofObject);// true
在JS中丛肮,你還可以為創(chuàng)建的對(duì)象任意添加、修改或移除某些屬性和方法(有些內(nèi)置屬性和方法可能無法被修改或移除)魄缚。
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中對(duì)象的屬性可以通過兩種方式訪問: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還支持以字面值形式創(chuàng)建一個(gè)自定義對(duì)象:{ property1:value1, property2:value2, propertyN:valueN }焚廊。
// 將上述自定義對(duì)象obj以字面值形式聲明
varo={
// 所有的屬性名稱都可以加上引號(hào)
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"]);// 包含特殊字符