今天俺跟大家一起来学习一下一个很小的知识点,那就是属性描述符,需要注意的是该功能是在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。
希望本篇文章的知识点,帮助到有需要的小伙伴~
原文链接:文章地址
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。