簡體   English   中英

遍歷所有屬性,而不僅僅是可枚舉的屬性

[英]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;
}
  1. while (obj)循環何時中斷?

  2. while塊中的行如何工作以將obj自己的屬性名稱添加到result

  1. while (obj)循環何時中斷?

當原型鏈中沒有更多原型時, getPrototypeOf返回null 對於常規對象,當您嘗試獲取Object.prototype的原型時會發生這種情況。

  1. while塊中的行如何工作以將obj自己的屬性名稱添加到result

Array.prototype.push.apply(result, array)經過在每個元件array作為參數來result.push 就像調用result.push(a[0], a[1], ...) ,其中aObject.getOwnPropertyNames(obj)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM