JS獲取對象屬性API匯總枚舉symbol
可枚舉性介紹
對象的每個屬性都有一個描述對象(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)前屬性。
目前,有四個操作會忽略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");};
//通過原型鏈增加屬性,為一個函數(shù)
Object.prototype.protoPer2 = 2;
//通過原型鏈增加屬性,為一個整型值2
for(var a in obj){
console.log(a);
}
// name
//sex
//protoPer1
//protoPer2
2、Object.keys
此方法返回一個數(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");};
//通過原型鏈增加屬性,為一個函數(shù)
Object.prototype.protoPer2 = 2;
//通過原型鏈增加屬性,為一個整型值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");};
//通過原型鏈增加屬性,為一個函數(shù)
Object.prototype.protoPer2 = 2;
//通過原型鏈增加屬性,為一個整型值2
console.log(Object.getOwnPropertyNames(obj));
//["name", "sex","age"]
4.Object.getOwnPropertySymbols()遍歷不可枚舉屬性
Symbol不可枚舉
Object.getOwnPropertySymbols()可以獲取指定對象的所有Symbol屬性名。代碼實例:
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的詳細內(nèi)容,更多關(guān)于JS獲取對象屬性API的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
javascript新建標(biāo)簽,判斷鍵盤輸入,以及判斷焦點(示例代碼)
這篇文章主要介紹了javascript新建標(biāo)簽,判斷鍵盤輸入,以及判斷焦點(示例代碼)。需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11
文本框(input)獲取焦點(onfocus)時樣式改變的示例代碼
本篇文章主要是對文本框(input)獲取焦點(onfocus)時樣式改變的示例代碼進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
基于jQuery+PHP+Mysql實現(xiàn)在線拍照和在線瀏覽照片
本文通過php jquery和mysql三者相結(jié)合,實現(xiàn)web版在線拍照上傳并可在線瀏覽,下面給大家分享基于jQuery+PHP+Mysql實現(xiàn)在線拍照和在線瀏覽照片,需要的朋友可以參考下2015-09-09

