JavaScript 获取对象属性和方法

ShineJaie 原创整理,转载请注明出处。

一、获取对象属性和方法

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); // 输出 arr ["name", "attr", "sayHi"]

16

17 // 返回的数组的所有属性(可枚举或不可枚举)直接找到给定对象。

18 console.log("attr", Object.getOwnPropertyNames(myTester)); // 输出 attr ["name", "attr", "sayHi"]

19

20 // 在 Object 原型上增加一个属性

21 Object.prototype.newShine = "it's me";

22

23 // 返回可枚举属性一直找到该对象的原型链

24 for (var i in myTester) {

25 console.log(i);

26 }

27 // 输出 name,attr,sayHi,newShine

28

29 // 返回直接定义在该对象上的可枚举属性

30 for (var i in myTester) {

31 if (myTester.hasOwnProperty(i)) {

32 console.log(i);

33 }

34 }

35 // 输出 name,attr,sayHi

二、Object.keys()、Object.getOwnPropertyNames()、for...in...对比

1 // 不可枚举的对象属性

2 var nonenum = Object.create({}, {

3 getFoo: {

4 value: function () {

5 return this.foo;

6 },

7 enumerable: false

8 }

9 });

10 nonenum.foo = 1;

11 nonenum.asj = 2;

12

13 // 获取对象可枚举或不可枚举的属性

14 console.log(Object.getOwnPropertyNames(nonenum).sort()); // 输出 ["asj", "foo", "getFoo"]

15

16 // 获取对象可枚举的属性

17 console.log(Object.keys(nonenum).sort()); // 输出 ["asj", "foo"]

18

19 // 返回直接定义在该对象上的可枚举属性

20 for (var i in nonenum) {

21 if (nonenum.hasOwnProperty(i)) {

22 console.log(i); // 输出 foo asj

23 }

24 }

三、分别获取JavaScript对象属性名和方法名

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 // 获取对象方法

15 for (var i in myTester) {

16 if (myTester.hasOwnProperty(i) && typeof myTester[i] == "function") {

17 console.log("对象方法: ", i, "=", myTester[i])

18 }

19 }

20 // 输出 对象方法: sayHi = () { return 'hi everyone!!!'; }

21

22 // 获取对象属性

23 for (var i in myTester) {

24 if (myTester.hasOwnProperty(i) && typeof myTester[i] != "function") {

25 console.log("对象属性: ", i);

26 }

27 }

28 // 输出 对象属性: name 对象属性: attr

如何在 Windows 中将视频设置为墙纸(完整指南)
讧字书法字典在线查询