對象屬於一種復合的數據類型,在對象中可以保存多個不同數據類型的屬性
對象的分類:
1.內建對象
-在ES標准中定義的對象,在任何的ES的實現中都可以使用
-比如:Math String Number Boolean Function Object...
2.宿主對象
-由js的運行環境提供的對象,目前來講主要指由瀏覽器提供的對象
-比如BOM DOM
3.自定義對象
-由開發人員自己創建的對象
創建對象:
方法一:
使用new關鍵字調用的函數,是構造函數constructor(構造函數是專門用來創建對象的函數)
使用typeof檢查一個對象時,會返回object
var obj = new Object();
console.log(typeof obj);//object
方法二: 使用對象字面量來創建一個對象
使用對象字面量,可以在創建對象時,直接指定對象中的屬性
語法:{屬性名:屬性值,屬性名:屬性值....}
對象字面量的屬性名可以加引號也可以不加,建議不加,
如果要使用一些特殊的名字,則必須加引號
屬性名和屬性值是一組一組的名值對結構,
名與值之間使用:連接,多個名值對之間使用逗號隔開
如果一個屬性之后沒有其他的屬性了,就不要寫逗號
var obj2 = {
name:"豬八戒",
age:23,
gender:"男"
test:{name:"沙和尚"}
};
console.log(obj2);
方法三:使用工廠方法創建對象 ,通過該方法可以大批量的創建對象
function creatPerson(name,age,gender){
//創建一個新的對象
var obj = new Object();
//向對象中添加屬性
obj.name = name;
obj.age = age;
obj.gender = gender;
obj.sayName = function(){
alert(this.name);
}
//將新的對象返回
return obj;
}
var obj2 = creatPerson("豬八戒",28,"男");
obj2.sayName()
向對象中添加屬性:
在對象中保存的值稱為屬性
向對象中添加屬性
語法:
對象.屬性名 = 屬性值;
//向object中添加一個屬性值
obj.name = "zy";
//向obj中添加gender屬性
obj.gender = "男";
//向obj中添加age屬性
obj.age = 18;
對象的屬性名不強制要求遵守標識符的規范,什么亂七八糟的名字都可以使用,但是我們使用時還是盡量按照標識符的規范去做。
如果使用特殊的屬性名,不能使用對象.屬性名的方式來操作
需要使用另一種方式
語法:對象["屬性名"] = 屬性值
使用[ ]這種形式去操作屬性,更加的靈活
在[ ]中可以直接傳遞一個變量,這樣變量值是多少就會讀取那個屬性
obj["123"] = 789;
obj["nihao"] = "nihao";
var n = "123";
console.log(obj[n]);//789 因為n的值為"123",而obj對象"123"的屬性值為789
JS中的屬性值可以是任意的數據類型,甚至它也可以是一個對象
讀取對象中的屬性
語法:對象.屬性名
如果讀取對象中沒有的屬性,不會報錯而是返回undefined
in 運算符
-通過該運算符可以檢查一個對象是否含有指定的屬性
如果有則返回true,沒有則返回false
-語法:
"屬性名" in 對象
//檢查obj中是否含有test2屬性
console.log("test2" in obj);//false
console.log("test" in obj);//true
修改對象的屬性值
語法:對象.屬性名 = 新值
obj.age = 22;
刪除對象的屬性
語法:delete 對象.屬性名