资讯专栏INFORMATION COLUMN

Javascript基础:js中属性描述符详解

Clect / 2988人阅读

摘要:之后,所有的属性都存在属性描述符这个属性。获取属性描述符属性的方法是以下面的代码为例返回该方法返回的是一个对象,该对象除了包含为的属性外,还包含了属性的三个特性。

今天俺跟大家一起来学习一下一个很小的知识点,那就是属性描述符,需要注意的是该功能是在ES5之后才出现的,也就是说ES5之前伟大的JS创造者并没有开放出该功能~大家现在知道了吧,其实我们学习的语言并不是什么天生的大神创造的,本身每一个语言都会有或多或少的问题,因此需要不断的学习每一个语言的新特性,程序员是真的苦逼,不仅要研究业务的bug,还要不断适应新版本解决语言本身存在的一些bug。

ES5之后,所有的属性都存在属性描述符这个属性。获取属性描述符属性的方法是:

Object.getOwnPropertyDescriptor

以下面的代码为例:

var object = {
    a: 2
}

Object.getOwnPropertyDescriptor(object,"a");//返回 {value: 2, writable: true, enumerable: true, configurable: true}
该方法返回的是一个对象,该对象除了包含value为2的属性外,还包含了属性的三个特性。

writable (是否可修改属性的值)
enumerable (是否出现在对象的属性枚举中)
configurable (是否可配置,属性设置为false之后,该属性值为不可逆的,也就是说不能再修改为true了)
我们举一个设置数组的enumerable为例:

var arr = [1,2,3]
Object.getOwnPropertyDescriptor(arr,"0",{enumerable:false});
for(var a in arr){
  console.log(arr[a]) //输出2,3
}
arr.forEach(function(item,index){
  console.log(item) //输出1,2,3
})

因为for in 遍历的是可枚举属性,因此没有输出1。

希望本篇文章的知识点,帮助到有需要的小伙伴~
原文链接:文章地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106450.html

相关文章

  • 详解js的遍历

    摘要:而的解析引擎遵循的是较老的第三版规范,属性遍历顺序由属性构建的顺序决定。将属性设置为不可枚举结语这篇文章希望能让大家更加理解中的遍历,写的不好多多见谅并指出 实例属性和原型属性 JavaScript中对象的属性分为两种: 数据属性 和 访问器属性 。 根据具体的上下文环境的不同,又可以将属性分为: 原型属性 和 实例属性 。 原型属性 是定义在对象的原型prototype 中的属性...

    李昌杰 评论0 收藏0
  • JavaScript对象详解

    摘要:属性描述符升级打怪必备技能对象有自己的属性和方法,对于我们对象的属性来讲,属性还有自己的属性,又称为属性描述符。这个方法接受三个参数,第一个是指定的对象,第二个是指定的对象参数,第三个当然是要修改的属性描述符了。 对象的声明有俩种: 字面量 通过new一个构造函数Object 两者唯一的区别就是,字面量形式,可以一次赋值多个,通过new Object就得一个一个赋值 数据类型 ...

    fancyLuo 评论0 收藏0
  • JS基础】Object 对象的原型概念详解

    摘要:使用操作符,创建一个对象,并且执行构造函数方法。使用可以返回一个字典型对象对象原型每一个对象都有一个内置的属性指向构造它的函数属性而构造函数的则指向构造函数本生。 对象概念 在 javascript 中, 一切引用类型均为对象。 如 function Foo () {} 中,Foo本身就是一个对象的引用。 创建对象方式 字面量方式 new 构造函数 函数声明 Object.creat...

    appetizerio 评论0 收藏0
  • 正则表达式前端使用手册

    摘要:非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 导读 你有没有在搜索文本的时候绞尽脑汁, 试了一个又一个表达式, 还是不行. 你有没有在表单验证的时候, 只是做做样子(只要不为空就好), 然后烧香拜佛, 虔诚祈祷, 千万不要出错. 你有没有在使用sed 和 grep 命令的时候, 感觉莫名其妙, 明明应该支持的元字符, 却就是匹配不到. 甚至,...

    zhoutao 评论0 收藏0
  • Javascript Object方法详解

    摘要:创建对象创建一个普通对象创建一个没有原型的新对象不继承任何属性和方法返回对象中可枚举的自我属性的名称的数组返回对象中所有自我属性的名称的数组属性的特性属性有两种特性数据属性和存取器属性数据属性存取器属性可以获得某个对象特定自有属性的属性描述 Object.create(o) 创建对象 Object.create({x: 1}) //创建一个普通对象 Object.create(null...

    sushi 评论0 收藏0

发表评论

0条评论

Clect

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<