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
原标题:JavaScript 获取对象属性和方法名的数组
关键词:JavaScript