今天俺跟你們一塊兒來學習一下一個很小的知識點,那就是屬性描述符,須要注意的是該功能是在ES5以後纔出現的,也就是說ES5以前偉大的JS創造者並無開放出該功能~你們如今知道了吧,其實咱們學習的語言並非什麼天生的大神創造的,自己每個語言都會有或多或少的問題,所以須要不斷的學習每個語言的新特性,程序員是真的苦逼,不只要研究業務的bug,還要不斷適應新版本解決語言自己存在的一些bug。html
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爲例:.net
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。code
但願本篇文章的知識點,幫助到有須要的小夥伴~
原文連接:文章地址htm