標籤:
內容要點:
一.in運算子
in運算子希望它的左運算元是一個字串或可以轉換為字串,希望它的右運算元是一個對象。如果右側的對象擁有一個名為左運算元數值的屬性名稱,那麼運算式返回true。
例如:
var point=["x":1,"y":2];
var a="x" in point; //true:對象裡有一個名為"x"的屬性
var b=z in point; //false:對象裡不存在名為"z"的屬性
"toString" in point //true:對象繼承了toString()方法
var data=[7,8,9];
"0" in data //true:數組包含元素"0"
1 in data //true:數群組轉換為字串
3 in data //false:沒有索引為3的元素
二.instanceof運算子
instanceof運算子希望左運算元是一個對象,右運算元標識對象的類。如果左側的對象是右側類的執行個體,則運算式返回true,否則返回false。
例如:
var d=new Date(); //通過Date()建構函式來建立一個新對象。
d instanceof Date; //計算結果為true,d是由Date()建立的
d instanceof Object; //計算結果為true,所有的對象都是Object的執行個體。
d instanceof Number; //計算結果為false,d不是一個Number對象
var a=[1,2,3]; //通過數組直接量的寫法建立一個數組。
a instanceof Array; //計算結果為true,a是一個數組。
a instanceof Object; //計算結果為true,所有的數組都是對象。
a instanceof RegExp ; //計算結果為false,數組不是Regex。
需要注意的是:所有的對象都是Object的執行個體。當通過instanceof判斷一個對象是否是一個類的執行個體的時候,這個判斷也會包含對"父類" 檢測。
如果右運算元不是函數,則拋出一個類型錯誤異常。
《JS權威指南學習總結--4.9.3in和instanceof運算子》