對象屬於一種復合的數據類型,在對象中可以保存多個不同數據類型的屬性 對象的分類: 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 對象.屬性名