[英]Iterate over all properties, not just enumerable ones
此代碼僅迭代對象的可枚舉屬性:
for (variable in object)
statement
以下代碼遍歷所有屬性,而不僅僅是可枚舉的屬性:
function getAllPropertyNames(obj) {
var result = [];
while (obj) {
Array.prototype.push.apply(result, Object.getOwnPropertyNames(obj));
obj = Object.getPrototypeOf(obj);
}
return result;
}
while (obj)
循環何時中斷?
while
塊中的行如何工作以將obj
自己的屬性名稱添加到result
?
while (obj)
循環何時中斷?
當原型鏈中沒有更多原型時, getPrototypeOf
返回null
。 對於常規對象,當您嘗試獲取Object.prototype
的原型時會發生這種情況。
while
塊中的行如何工作以將obj
自己的屬性名稱添加到result
?
Array.prototype.push.apply(result, array)
經過在每個元件array
作為參數來result.push
。 就像調用result.push(a[0], a[1], ...)
,其中a
是Object.getOwnPropertyNames(obj)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.