怎樣獲取對象的所有屬性


使用Object.keys()可以獲取對象本身所有的可遍歷屬性;

使用Object.getOwnPropertyNames()可以獲取對象本身所有屬性, 不管是否可遍歷;

使用for...in...循環可以獲取對象所有可遍歷屬性, 包括本身的屬性和繼承的屬性;

使用下面的函數可以獲取對象的所有屬性, 不管是本身還是繼承, 不管是可遍歷還是不可遍歷: 

function inheritedPropertyNames(obj) {
  var props = {};
  while(obj) {
    Object.getOwnPropertyNames(obj).forEach(function(p) {
      props[p] = true;
    });
    obj = Object.getPrototypeOf(obj);
  }
  return Object.getOwnPropertyNames(props);
}

 

這個函數的執行邏輯是: 遍歷所有當前對象的屬性, 完成后把原型賦值給當前對象, 繼續下一輪循環, 直到: Object.getPrototypeOf(Object.prototype.__proto__)為止;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM