js中查看js對象的屬性


一、創建Ibject

1、

在js中創建對象並賦值

var testObj= new Object();
testObj.name = "shangguan";
testObj.age= 25;
testObj.action = function () {
    return this.name;
}

2、直接新建對象,不通過構造函數(而且直接新建速度比構造器還快一些!

var testObj={};
testObj.name = "shangguan";
testObj.age= 25;
testObj.action = function () {
    return this.name;
};

3、重載構造器,讓構造器在構造對象時按預定的屬性構建。

// 創建一個對象的構造方法
function newObj(name, age) {
    this.name = name;
    this.age= age;
    this.action = function () {
        return this.name;
    }
}
// 創建一個對象
var testObj= new newObj("shangguan", 25);
二、使用Object對象

1、對象內置屬性方法:Object.keys();該方法返回一個數組,數組內包括對象內可枚舉屬性以及方法名稱。數組中屬性名的排列順序和使用 for...in 遍歷該對象時返回的順序一致。

  // 通過調用Object.keys()方法,獲取對象上已定義(可枚舉)的屬性和方法

 var keys= Object.keys(testObj);
  console.log(keys); // 輸出 keys ["name", "age", "action"]

  

2、Object.getOwnPropertyNames():方法返回一個指定對象所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數組

  該數組是 obj自身擁有的枚舉或不可枚舉屬性名稱字符串集合。 數組中枚舉屬性的順序與通過 for...in 循環(或 Object.keys())迭代該對象屬性時一致。數組中不可枚舉屬性的順序未定義。

 var keys = Object.getOwnPropertyNames(testObj);
  console.log(keys);  // 輸出 keys ["name", "age", "action"]

 

3、當然除了以上兩個外,還有最原始的 for...in 循環(估計是平時循環用的多了,反倒是這個不怎么用!)

var keys =[];
  for(var i in testObj){
      keys.push(i);
  }
  console.log(keys);   // keys ["name", "age", "action"]

4、上面三者之間的關系

var testObj = Object.create({}, {
    getFoo: {
        value: function () {
            return this.foo;
        },
        enumerable: false
    }
});
testObj.name = "shangguan";
testObj.age = 25;
testObj.action = function(){
  return this.name;
};
function getKeys() {
    // 獲取對象可枚舉和不可枚舉的屬性
    console.log(Object.getOwnPropertyNames(testObj));   //輸出:["getFoo", "name", "age", "action"]
    // 獲取對象可枚舉的屬性
    console.log(Object.keys(testObj));  //輸出:["name", "age", "action"]
    // 獲取對象可枚舉的屬性
    for (var i in testObj) {
        console.log(i);     //輸出 name,age,action
    }
    //返回直接定義在該對象上的可枚舉屬性,非繼承。通過hasOwnProperty()方法可以將那些屬性是對象自身(非繼承)屬性篩選出來,從而將不可枚舉屬性排除出去
    //obj.hasOwnProperty(prop): prop要檢測的屬性,字符串 名稱或者 Symbol。     返回值:用來判斷某個對象是否含有指定的屬性 的Boolean值
    for (var i in testObj) {
        if(testObj.hasOwnProperty(i)) {
            console.log(i);
        }    //輸出 name,age,action
    }
}

  


免責聲明!

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



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