最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS獲取對(duì)象屬性API匯總枚舉symbol

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

可枚舉性介紹

對(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)文章

最新評(píng)論

同心县| 汤阴县| 措勤县| 中西区| 华阴市| 璧山县| 漯河市| 泽州县| 海原县| 鹿邑县| 澜沧| 五指山市| 启东市| 灌阳县| 中方县| 威信县| 太原市| 法库县| 疏勒县| 新竹县| 巴楚县| 马关县| 黄冈市| 芮城县| 汉沽区| 剑川县| 瓮安县| 略阳县| 琼结县| 冀州市| 安义县| 陈巴尔虎旗| 鹤岗市| 恩施市| 武定县| 利津县| 图们市| 阿克苏市| 城口县| 简阳市| 湟中县|