首页IT科技javascript获取对象属性(JS获取对象属性API汇总枚举symbol)

javascript获取对象属性(JS获取对象属性API汇总枚举symbol)

时间2025-05-02 23:06:23分类IT科技浏览4389
导读:可枚举性介绍 对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。...

可枚举性介绍

对象的每个属性都有一个描述对象(Descriptor)              ,用来控制该属性的行为            。

Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象                    。

代码示例:

let obj = { name: Tom, age: 20 } console.log(Object.getOwnPropertyDescriptor(obj,name)) // { // configurable: true // enumerable: true // value: "Tom" // writable: true // }

描述对象的enumerable属性                  ,称为“可枚举性              ”      ,如果该属性为false           ,就表示某些操作会忽略当前属性      。

目前                  ,有四个操作会忽略enumerable为false的属性         。

for...in循环:只遍历对象自身的和继承的可枚举的属性                    。

Object.keys():返回对象自身的所有可枚举的属性的键名         。

JSON.stringify():只串行化对象自身的可枚举的属性      。

Object.assign(): 忽略enumerable为false的属性         ,只拷贝对象自身的可枚举的属性                    。

获取对象属性API

1.for in

主要用于遍历对象的可枚举属性        ,包括自有属性            、继承自原型的属性                   ,代码示例:

var obj = {"name":"tom","sex":"male"}; Object.defineProperty(obj, "age", {value:"18", enumerable:false}); //增加不可枚举的属性age Object.prototype.protoPer1 = function(){console.log("name is tom");}; //通过原型链增加属性            ,为一个函数 Object.prototype.protoPer2 = 2; //通过原型链增加属性    ,为一个整型值2 for(var a in obj){ console.log(a); } // name //sex //protoPer1 //protoPer2

2                    、Object.keys

此方法返回一个数组                    ,元素均为对象自有可枚举的属性

Object.keys主要用于遍历对象自有的可枚举属性               ,不包括继承自原型的属性和不可枚举的属性             。代码示例:

var obj = {"name":"tom","sex":"male"}; Object.defineProperty(obj, "age", {value:"18", enumerable:false}); //增加不可枚举的属性age Object.prototype.protoPer1 = function(){console.log("name is tom");}; //通过原型链增加属性,为一个函数 Object.prototype.protoPer2 = 2; //通过原型链增加属性                 ,为一个整型值2 console.log(Object.keys(obj)); //["name", "sex"]

3      、Object.getOwnPropertyNames

主要用于返回对象的自有属性                  ,包括可枚举和不可枚举的属性   ,不包括继承自原型的属性   。代码示例:

var obj = {"name":"tom","sex":"male"}; Object.defineProperty(obj, "age", {value:"18", enumerable:false}); //增加不可枚举的属性age Object.prototype.protoPer1 = function(){console.log("name is tom");}; //通过原型链增加属性              ,为一个函数 Object.prototype.protoPer2 = 2; //通过原型链增加属性                  ,为一个整型值2 console.log(Object.getOwnPropertyNames(obj)); //["name", "sex","age"]

4.Object.getOwnPropertySymbols()遍历不可枚举属性

Symbol不可枚举

Object.getOwnPropertySymbols()可以获取指定对象的所有Symbol属性名                   。代码实例:

var obj = {}; var a = Symbol(a); var b = Symbol(b); obj[a] = ikun; obj[b] = cai; var objectSymbols = Object.getOwnPropertySymbols(obj); console.log(objectSymbols) //[ Symbol(a), Symbol(b) ]

Reflect.ownKeys

Reflect.ownKeys方法可以返回自身所有类型的键名,不包括继承自原型的属性                 。代码示例:

let obj = { [Symbol(my_key)]:1, enum:2, nonEnum:3 }; let objectKeys =Reflect.ownKeys(obj) console.log(objectKeys) //[ enum, nonEnum, Symbol(my_key) ]

以上就是JS获取对象属性API汇总枚举symbol的详细内容      ,更多关于JS获取对象属性API的资料请关注本站其它相关文章!

声明:本站所有文章           ,如无特殊说明或标注                  ,均为本站原创发布。任何个人或组织         ,在未征得本站同意时        ,禁止复制         、盗用                    、采集         、发布本站内容到任何网站      、书籍等各类媒体平台               。如若本站内容侵犯了原著者的合法权益                   ,可联系我们进行处理                    。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vim matchit(Vim和Ctags使用心得在Taglist中加入VHDL语言) 如何优化网站跳出率(网站的跳出率高的影响因素有哪些)