for-in循環應該用在非數組對象的遍歷上,使用for-in進行循環也被稱為“枚舉”。
對於數組 ,迭代出來的是數組元素 但不推薦,因為不能保證順序,而且如果在Array的原型上添加了屬性,這個屬性也會被遍歷出來,所以
最好數組使用正常的for循環,對象使用for-in循環
對於對象 ,迭代出來的是對象的屬性;
var obj = { "key1":"value1", "key2":"value2", "key3":"value3" }; function EnumaKey(){ for(var key in obj ){ alert(key); } } function EnumaVal(){ for(var key in obj ){ alert(obj[key]); } }
javascript中in關鍵字還有下面的作用
定義:
in操作符用來判斷某個屬性屬於某個對象,可以是對象的直接屬性,也可以是通過prototype繼承的屬性。
var Fn = function () { this.age = 1; }; Fn.prototype.name = 'jim'; // Fn.prototype.age = undefined; var f = new Fn(); // hasOwnProperty // 如何判斷屬性是被繼承的??? console.log( 'age' in f && !f.hasOwnProperty( 'age' ) ); // age 可能存在原型鏈上, 也可能不存在 // 如果屬性值就是 null 或 undefined, 那麼此時 f.age 就無法判斷了
對於一般的對象屬性需要用字符串指定屬性的名稱
如:
var mycar = {make: "Honda", model: "Accord", year: 1998}; "make" in mycar // returns true "model" in mycar // returns true
如果你使用delete操作符刪除了一個屬性,再次用in檢查時,會返回false,如:
var mycar = {make: "Honda", model: "Accord", year: 1998}; delete mycar.make; "make" in mycar; // returns false var trees = new Array("redwood", "bay", "cedar", "oak", "maple"); delete trees[3]; 3 in trees; // returns false
如果你把一個屬性值設為undefined,但是沒有使用delete操作符,使用in檢查,會返回true.
var mycar = {make: "Honda", model: "Accord", year: 1998}; mycar.make = undefined; "make" in mycar; // returns true var trees = new Array("redwood", "bay", "cedar", "oak", "maple"); trees[3] = undefined; 3 in trees; // returns true
以上所述是小編給大家介紹的JavaScript中關鍵字 in 的使用方法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!