1. 程式人生 > >js 遍歷對象屬性(for in、Object.keys、Object.getOwnProperty) 以及高效地輸出 js 數組

js 遍歷對象屬性(for in、Object.keys、Object.getOwnProperty) 以及高效地輸出 js 數組

code keys prototype ever 包括 pan 場景 .com rip

js中幾種遍歷對象的方法,包括for in、Object.keys、Object.getOwnProperty,它們在使用場景方面各有不同。

for in

主要用於遍歷對象的可枚舉屬性,包括自有屬性、繼承自原型的屬性

var obj = {"name":"Poly", "career":"it"}
Object.defineProperty(obj, "age", {value:"forever 18", enumerable:false});
Object.prototype.protoPer1 = function(){console.log("proto");};
Object.prototype.protoPer2 
= 2; console.log("For In : "); for(var a in obj) console.log(a);

技術分享圖片



Object.keys

返回一個數組,元素均為對象自有的可枚舉屬性

var obj = {"name":"Poly", "career":"it"}
Object.defineProperty(obj, "age", {value:"forever 18", enumerable:false});
Object.prototype.protoPer1 = function(){console.log("proto");};
Object.prototype.protoPer2 
= 2; console.log("Object.keys:") console.log(Object.keys(obj));

技術分享圖片

Object.getOwnProperty

用於返回對象的自有屬性,包括可枚舉和不可枚舉的

var obj = {"name":"Poly", "career":"it"}
Object.defineProperty(obj, "age", {value:"forever 18", enumerable:false});
Object.prototype.protoPer1 = function(){console.log("proto");};
Object.prototype.protoPer2 
= 2; console.log("Object.getOwnPropertyNames: "); console.log(Object.getOwnPropertyNames(obj));

輸出如下:
技術分享圖片

怎樣快速而優雅地遍歷 JavaScript 數組

// 最快且優雅的代碼
var array = [0,1,2,3,4,5,6,7,8,9];

// while 循環
var i = array.length;
while (i–-) {
    fn(array[i]);
}

js 遍歷對象屬性(for in、Object.keys、Object.getOwnProperty) 以及高效地輸出 js 數組