for-in循環(huán)應(yīng)該用在非數(shù)組對(duì)象的遍歷上,使用for-in進(jìn)行循環(huán)也被稱為“枚舉”。
對(duì)于數(shù)組 ,迭代出來(lái)的是數(shù)組元素 但不推薦,因?yàn)椴荒鼙WC順序,而且如果在Array的原型上添加了屬性,這個(gè)屬性也會(huì)被遍歷出來(lái),所以
最好數(shù)組使用正常的for循環(huán),對(duì)象使用for-in循環(huán)
對(duì)于對(duì)象 ,迭代出來(lái)的是對(duì)象的屬性;
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關(guān)鍵字還有下面的作用
定義:
in操作符用來(lái)判斷某個(gè)屬性屬于某個(gè)對(duì)象,可以是對(duì)象的直接屬性,也可以是通過(guò)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, 那么此時(shí) f.age 就無(wú)法判斷了對(duì)于一般的對(duì)象屬性需要用字符串指定屬性的名稱
如:
var mycar = {make: "Honda", model: "Accord", year: 1998};"make" in mycar // returns true"model" in mycar // returns true如果你使用delete操作符刪除了一個(gè)屬性,再次用in檢查時(shí),會(huì)返回false,如:
var mycar = {make: "Honda", model: "Accord", year: 1998};delete mycar.make;"make" in mycar; // returns falsevar trees = new Array("redwood", "bay", "cedar", "oak", "maple");delete trees[3];3 in trees; // returns false如果你把一個(gè)屬性值設(shè)為undefined,但是沒(méi)有使用delete操作符,使用in檢查,會(huì)返回true.
var mycar = {make: "Honda", model: "Accord", year: 1998};mycar.make = undefined;"make" in mycar; // returns truevar trees = new Array("redwood", "bay", "cedar", "oak", "maple");trees[3] = undefined;3 in trees; // returns true以上所述是小編給大家介紹的JavaScript中關(guān)鍵字 in 的使用方法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注