JS獲取對(duì)象屬性API匯總枚舉symbol
可枚舉性介紹
對(duì)象的每個(gè)屬性都有一個(gè)描述對(duì)象(Descriptor),用來控制該屬性的行為。
Object.getOwnPropertyDescriptor方法可以獲取該屬性的描述對(duì)象。
代碼示例:
let obj = {
name: 'Tom',
age: 20
}
console.log(Object.getOwnPropertyDescriptor(obj,'name'))
// {
// configurable: true
// enumerable: true
// value: "Tom"
// writable: true
// }
描述對(duì)象的enumerable屬性,稱為“可枚舉性”,如果該屬性為false,就表示某些操作會(huì)忽略當(dāng)前屬性。
目前,有四個(gè)操作會(huì)忽略enumerable為false的屬性。
for...in循環(huán):只遍歷對(duì)象自身的和繼承的可枚舉的屬性。
Object.keys():返回對(duì)象自身的所有可枚舉的屬性的鍵名。
JSON.stringify():只串行化對(duì)象自身的可枚舉的屬性。
Object.assign(): 忽略enumerable為false的屬性,只拷貝對(duì)象自身的可枚舉的屬性。
獲取對(duì)象屬性API
1.for in
主要用于遍歷對(duì)象的可枚舉屬性,包括自有屬性、繼承自原型的屬性,代碼示例:
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ù)組,元素均為對(duì)象自有可枚舉的屬性
Object.keys主要用于遍歷對(duì)象自有的可枚舉屬性,不包括繼承自原型的屬性和不可枚舉的屬性。代碼示例:
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
主要用于返回對(duì)象的自有屬性,包括可枚舉和不可枚舉的屬性,不包括繼承自原型的屬性。代碼示例:
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()可以獲取指定對(duì)象的所有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獲取對(duì)象屬性API匯總枚舉symbol的詳細(xì)內(nèi)容,更多關(guān)于JS獲取對(duì)象屬性API的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
javascript新建標(biāo)簽,判斷鍵盤輸入,以及判斷焦點(diǎn)(示例代碼)
這篇文章主要介紹了javascript新建標(biāo)簽,判斷鍵盤輸入,以及判斷焦點(diǎn)(示例代碼)。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11
文本框(input)獲取焦點(diǎn)(onfocus)時(shí)樣式改變的示例代碼
本篇文章主要是對(duì)文本框(input)獲取焦點(diǎn)(onfocus)時(shí)樣式改變的示例代碼進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01
javascript之學(xué)會(huì)吝嗇 精簡(jiǎn)代碼
前端開發(fā),要學(xué)會(huì)吝嗇:2010-04-04
BootStrap給table表格的每一行添加一個(gè)按鈕事件
這篇文章主要介紹了BootStrap給table表格的每一行添加一個(gè)按鈕事件的相關(guān)資料,需要的朋友可以參考下2017-09-09
javascript輕量級(jí)模板引擎juicer使用指南
Juicer 是一個(gè)高效、輕量的前端 (Javascript) 模板引擎,使用 Juicer 可以是你的代碼實(shí)現(xiàn)數(shù)據(jù)和視圖模型的分離(MVC)。2014-06-06
基于jQuery+PHP+Mysql實(shí)現(xiàn)在線拍照和在線瀏覽照片
本文通過php jquery和mysql三者相結(jié)合,實(shí)現(xiàn)web版在線拍照上傳并可在線瀏覽,下面給大家分享基于jQuery+PHP+Mysql實(shí)現(xiàn)在線拍照和在線瀏覽照片,需要的朋友可以參考下2015-09-09
用window.onerror捕獲并上報(bào)Js錯(cuò)誤的方法
這篇文章主要介紹了用window.onerror捕獲并上報(bào)Js錯(cuò)誤的方法,需要的朋友可以參考下2016-01-01

