星期日, 9月 25, 2011

檢查物件是否具有指定的屬性:JavaScript 的 in 運算子

記憶中好像沒有好好認真學過 JavaScript, 多半是隨著應用就邊用邊學, 所以常常在遇到問題時才去查, 前幾天就遇到想要確認某一物件是否具有指定的屬性, 才發現不知道該怎麼做?直覺想到的是用 for in 列舉所有的屬性之後再一一檢查, 但總是覺得不可能只有這麼笨的方法, 一查才知道原來 in 並不是指能與 for 配合使用, 而是可以單獨運作, 它的作用就是檢查左邊運算元是否為右邊運算元的屬性。例如如果有一個這樣的物件:
var obj = {1:"one","two":"two"};
那麼就可以利用 in 運算子檢查是否具有某屬性。以下就以 node.js 為例, 示範 in 運算子的用法:
console.log(1 in obj);
console.log(2 in obj);
console.log("1" in obj);
console.log("two" in obj);
這一段程式的輸出結果如下:
D:\TEMP>node test.js
true
false
true
true
由於 1 是 obj 的屬性, 所以第一個輸出是 true, 而 2 並不是 obj 的屬性, 所以第二個輸出就是 false。要特別留意的是第三個輸出結果為 true, 這是因為在 JavaScript 中, 物件的屬性一定是字串, 如果你指定的屬性名稱是數值, 也會先被轉為字串, 因此, 雖然我們在建立物件時用了 1 當作屬性名稱, 實際上屬性的名稱為 "1", 所以第三個輸出也是 true。

沒有留言: