JS获取对象属性名总结

JS获取对象属性名总结

最近面试遇到问如何获取对象全部属性名的方法,总结一下:

对象属性类型分类:

1.ESMAScript分类

数据类型 又分为可枚举和不可枚举类型 访问器类型

2.上下文分类

原型属性 实例属性 1.列举自身但不包括原型的可枚举属性名 Object.keys(obj) // 遍历对象 function Person(name, age) { this.name = name; this.age = age; } Person.prototype.demo = function() {}; let cj = new Person('cj', 25); // 通过Object.defineProperty定义一个不可枚举属性 Object.defineProperty(cj, 'weight', { enumerable:false }) // enumerable = true // console.log(Object.keys(cj)) // name age // enumerable = false // console.log(Object.keys(cj)) // name age weight 2.列举包括自身不可枚举但不包括原型的属性名 Object.getOwnPropertyNames(obj) function Person(name, age) { this.name = name; this.age = age; } // 设置原型属性 Person.prototype.demo = function() {}; let cj = new Person('cj', 25); // 通过Object.defineProperty定义一个不可枚举属性 Object.defineProperty(cj, 'weight', { enumerable:false }) // 获取属性名 console.log(Object.getOwnPropertyNames(cj)) // name age weight 3.获取自身和原型链上的可枚举属性 for in 返回的顺序可能与定义顺序不一致 function Person(name, age) { this.name = name; this.age = age; } // 设置原型属性 Person.prototype.demo = function() {}; Object.prototype.j = 1 let cj = new Person('cj', 25); // 通过Object.defineProperty定义一个不可枚举属性 Object.defineProperty(cj, 'weight', { enumerable:false }) let props = [] for(prop in cj){ props.push(prop) } console.log(props) //name age weight j 4.获取自身Symbol属性 Object.getOwnPropertySymbols(obj) let obj = {}; // 为对象本身添加Symbol属性名 let a = Symbol("a"); obj[a] = "localSymbol"; // 为对象原型添加Symbol属性名 let b = Symbol("b") Object.prototype[b] = 111 let objectSymbols = Object.getOwnPropertySymbols(obj); console.log(objectSymbols); //Symbol(a) 5.获取自身包括不可枚举和Symbol属性名,但不包括原型 Reflect.ownKeys(obj) // 遍历对象 function Person(name, age) { this.name = name; this.age = age; } Person.prototype.demo = function() {}; let s = Symbol('s') let cj = new Person('cj', 25); // 通过Object.defineProperty定义一个不可枚举属性 Object.defineProperty(cj, 'weight', { enumerable: false }) cj[s] = 1 let a = Symbol('a') Object.prototype[a] = 1 console.log(Object.getOwnPropertyNames(cj)) //name age weight console.log(Reflect.ownKeys(cj)) //name age weight Symbol(s)

 更多关于JS获取对象属性名的使用小技巧请查看下面的相关链接

推荐阅读

    扬声器属性级别设置|扬声器属性高级

    扬声器属性级别设置|扬声器属性高级,,1. 扬声器属性高级选择“高级”标签试试,不行的话,说明系统有问题了,直接换个验证过的系统盘重装系统就

    js设置div的边框|怎样给div设置边框

    js设置div的边框|怎样给div设置边框,,1. 怎样给div设置边框1、首先新建一个html文件,输入基本的内容,这里设置一个div,并把它的class设置为de

    js设置样式|js设置样式类

    js设置样式|js设置样式类,,js设置样式    javascript改变CSS样式分为局部和全局,分别如下:  一、局部改变样式    有三种方法:直接

    Python之可迭代对象、迭代器、生成器

    Python之可迭代对象、迭代器、生成器,迭代,生成器,一、概念描述可迭代对象就是可以迭代的对象,我们可以通过内置的iter函数获取其迭代器,可

    快捷键打开软件|快捷键打开软件属性

    快捷键打开软件|快捷键打开软件属性,,快捷键打开软件属性1.首先打开PS,鼠标左键单击“编辑”;2.在弹出的窗口找“键盘快捷键”,如果没有点击

    应用程序对象

    应用程序对象,,应用程序对象是一个应用程序级对象,用于在所有用户之间共享信息,并且在Web应用程序运行期间可以保存数据。 应用的性质: 方法

    js用代码实现简单购物车

    js用代码实现简单购物车,,图: 选择所有按钮: 复制代码代码如下所示: 选择 笔记本电脑:3000元 笔记本电脑:3000元 笔记本电脑:3000元 笔记本电脑:3

    js设置背景色|js设置颜色

    js设置背景色|js设置颜色,,js设置背景色首先通过js定位到div的子元素,再通过setatteibute方法给属性添加背景色。js设置颜色js改变字体的颜