物件作為資料型別
存取屬性
刪除屬性
屬性名稱的語法
蟜屬性名稱的語法
蟜屬性
除了兩個例外 null 和 undefined 。
false.toString(); // 'false' [1, 2, 3].toString(); // '1,2,3' function Foo(){} Foo.bar = 1; Foo.bar; // 1
一個常見的誤解是數字的字面值(literal)不能當作物件。這是因為 JavaScript 解析器的一個錯誤, 它試圖將點運算子解析為浮點數數位面值的一部分。
2.toString(); // 出错:SyntaxError
有很多變通方法可以讓數字的字面值看起來像物件。 2..toString(); // 第二个点号可以正常解析
2 .toString(); // 注意点号前面的空格
(2).toString(); // 2先被计
JavaScript 的物件可以當作雜湊表使用,主要用來保存命名的鍵與值的對應關係。
使用物件的字面語法 - {} - 可以建立一個簡單物件。這個新建立的物件從Object.prototype 繼承下面,沒有任何自訂屬性。 var foo = {}; // 一个空对象
// 一个新对象,拥有一个值为12的自定义属性'test'
var bar = {test: 12};
有兩種方式來存取物件的屬性,點操作符或中括號操作符。
var foo = {name: 'kitten'} foo.name; // kitten foo['name']; // kitten var get = 'name'; foo[get]; // kitten foo.1234; // SyntaxError foo['1234']; // works
刪除屬性
刪除屬性的唯一方法是使用 delete 操作符;設定屬性為 undefined 或 null 並不能真正的刪除屬性,而僅是移轉除了屬性和值的關聯。
var obj = { bar: 1, foo: 2, baz: 3 }; obj.bar = undefined; obj.foo = null; delete obj.baz; for(var i in obj) { if (obj.hasOwnProperty(i)) { console.log(i, '' + obj[i]); } }
上面的輸出結果有 bar undefined 和 foo null - 只有 baz 真正的刪除了,所以從輸出結果中消失。
屬性名的語法
var test = { 'case': 'I am a keyword so I must be notated as a string', delete: 'I am a keyword too so me' // 出错:SyntaxError };
物件的屬性名稱可以使用字串或普通字元宣告。但由於 JavaScript 解析器的另一個錯誤設計, 上面的第二種宣告方式在 ECMAScript 5 之前會拋出SyntaxError 的錯誤。
這個錯誤的原因是 delete 是 JavaScript 語言的一個關鍵字;因此為了在更低版本的 JavaScript 引擎下也能正常運行, 必須使用字串字面值宣告方式。
以上就是JavaScript進階系列—物件使用與屬性的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!