欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS獲取對象屬性API匯總枚舉symbol

 更新時(shí)間:2022年10月21日 16:31:51   作者:十七喜歡前端  
這篇文章主要為大家介紹了JS獲取對象屬性API匯總可枚舉性不可枚舉性及symbol介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

可枚舉性介紹

對象的每個(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)文章

最新評論