JS獲取對象屬性API匯總枚舉symbol
可枚舉性介紹
對象的每個(gè)屬性都有一個(gè)描述對象(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,就表示某些操作會忽略當(dāng)前屬性。
目前,有四個(gè)操作會忽略enumerable為false的屬性。
for...in循環(huán):只遍歷對象自身的和繼承的可枚舉的屬性。
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");}; //通過原型鏈增加屬性,為一個(gè)函數(shù) Object.prototype.protoPer2 = 2; //通過原型鏈增加屬性,為一個(gè)整型值2 for(var a in obj){ console.log(a); } // name //sex //protoPer1 //protoPer2
2、Object.keys
此方法返回一個(gè)數(shù)組,元素均為對象自有可枚舉的屬性
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");}; //通過原型鏈增加屬性,為一個(gè)函數(shù) Object.prototype.protoPer2 = 2; //通過原型鏈增加屬性,為一個(gè)整型值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");}; //通過原型鏈增加屬性,為一個(gè)函數(shù) Object.prototype.protoPer2 = 2; //通過原型鏈增加屬性,為一個(gè)整型值2 console.log(Object.getOwnPropertyNames(obj)); //["name", "sex","age"]
4.Object.getOwnPropertySymbols()遍歷不可枚舉屬性
Symbol不可枚舉
Object.getOwnPropertySymbols()可以獲取指定對象的所有Symbol屬性名。代碼實(shí)例:
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的詳細(xì)內(nèi)容,更多關(guān)于JS獲取對象屬性API的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序swiper左右擴(kuò)展各顯示一半代碼實(shí)例
這篇文章主要介紹了微信小程序swiper左右擴(kuò)展各顯示一半代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12JavaScript函數(shù)節(jié)流和函數(shù)防抖之間的區(qū)別
本文主要介紹了JavaScript函數(shù)節(jié)流和函數(shù)防抖之間的區(qū)別。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02JS+CSS實(shí)現(xiàn)經(jīng)典的左側(cè)豎向滑動(dòng)菜單效果
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)經(jīng)典的左側(cè)豎向滑動(dòng)菜單效果,涉及JavaScript響應(yīng)鼠標(biāo)事件動(dòng)態(tài)操作頁面元素的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09原生JS forEach()和map()遍歷的區(qū)別、兼容寫法及jQuery $.each、$.map遍歷操作
這篇文章主要介紹了原生JS forEach()和map()遍歷的區(qū)別、兼容寫法及jQuery $.each、$.map遍歷操作,結(jié)合實(shí)例形式分析了JS使用forEach()和map()以及jQuery使用$.each、$.map進(jìn)行遍歷操作相關(guān)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-02-02js實(shí)現(xiàn)動(dòng)畫特效的文字鏈接鼠標(biāo)懸停提示的方法
這篇文章主要介紹了js實(shí)現(xiàn)動(dòng)畫特效的文字鏈接鼠標(biāo)懸停提示的方法,實(shí)例分析了javascript操作css的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03javascript 限制輸入和粘貼(IE和火狐3.x下測試通過)
限制輸入和粘貼的js代碼2008-11-11