你的位置:首页 > Java教程

[Java教程]JavaScript 获取对象属性和方法名的数组


Object.keys() 返回对象的可枚举属性和方法名称数组
Object.getOwnPropertyNames() 返回的数组的所有属性(可枚举或不可枚举)直接找到给定对象。
 1   // 创建一个对象的构造方法 2   function myObj(name, attr) { 3     this.name = name; 4     this.attr = attr; 5  6     this.sayHi = function () { 7       return 'hi everyone!!!'; 8     } 9   }10 11   // 创建一个对象12   var myTester = new myObj("shinejaie", 1)13   // 获取直接在对象上定义(可枚举)的属性和方法14   var arr = Object.keys(myTester);15   console.log('arr', arr);16 17   // 输出:18   // arr ["name", "attr", "sayHi"]19 20   // 在 Object 原型上增加一个属性21   Object.prototype.newShine = "it's me";22 23   // 测试一24   var arr1 = Object.keys(myTester);25   console.log('arr1', arr1);26   // 输出:27   // arr1 ["name", "attr", "sayHi"]28 29   // 测试二30   for (var i in myTester) {31     console.log(i);32   }33   // 输出34   // name,attr,sayHi,newShine35 36   // 测试三37   for (var i in myTester) {38     if (myTester.hasOwnProperty(i)) {39       console.log(i);40     }41   }42   // 输出43   // name,attr,sayHi44 45   // 返回的数组的所有属性(可枚举或不可枚举)直接找到给定对象。46   console.log("attr", Object.getOwnPropertyNames(myTester));47   // output attr ["name", "attr", "sayHi"]


 PS:如何分别获取JavaScript对象属性名和方法名

 1   // 获取对象方法 2   for (var i in myTester) { 3     if (myTester.hasOwnProperty(i) && typeof myTester[i] == "function") { 4       console.log("对象方法:", i, "=", myTester[i]) 5     } 6   } 7   // 输出 sayHi = () { return 'hi everyone!!!'; } 8  9   // 获取对象属性10   for (var i in myTester) {11     if (myTester.hasOwnProperty(i) && typeof myTester[i] != "function") {12       console.log("对象属性:", i);13     }14   }15   // 输出 对象属性: name 对象属性: attr