国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

屬性的可枚舉性與不可枚舉性

Jason / 1092人閱讀

摘要:判斷可枚舉屬性與不可枚舉屬性方法方法返回一個布爾值,表示指定的自身屬性是否可枚舉。

我們到MDN上搜索屬性的可枚舉性和所有權

可枚舉屬性是指內部可枚舉標志(enumerable)設置為true的屬性,自然不可枚舉屬性即是enumerablefalse

我們看下JavaScript基本類型和基本類型包裹對象

基本類型是指非對象且無方法的數據。
JavaScript有6種基本類型:string,number,boolean,null,undefined,symbol
除了null和undefined外,所有基本類型值都有包裹這個基本類型值的等價對象:
String Boolean Number Symbol
JavaScript有7種不同類型的值

六種 原型 數據類型

Boolean

String

Number

null

undefined

Symbol

Object對象

還有一個概念就是字面量,有以下字面量

數組字面量(Array)

布爾字面量 (Boolean)

浮點數字面量 (Float)

整數 (Int)

對象字面量 (Object)

RegExp

字符串字面量 (String)

好了好了扯遠了,為什么說這些呢,拋出問題,以上屬性是否可枚舉呢?

下面來看一個例子:

function Person() {
    this.name = "fyflying"
}
Person.prototype = {
    hobby: "coding"
}
var person = new Person()
Object.defineProperty(person, "sex", {
    value: "female"
})
for (var item in person) {
    console.log(item + ":" + person[item])
}
/**
name:fyflying
hobby:coding
**/
Object.keys(person)
// ["name"]
JSON.stringify(person)
//"{"name":"fyflying"}"

可以看到除了sex屬性其他都遍歷到了,而且使用for..inObject.keys還是有區別的,區別就在于使用for...in還會遍歷出對象從原型鏈上繼承來的可枚舉屬性

通過Object.defineProperty定義的屬性,該標志值默認是false, 所以不可枚舉,通過for..inObject.keys()都遍歷不到。

判斷可枚舉屬性與不可枚舉屬性方法
propertyIsEnumerable(): 方法返回一個布爾值,表示指定的自身屬性是否可枚舉。(不包括原型鏈繼承的屬性)

區別以下方法:

使用 for...in迭代,遍歷出自身以及原型鏈上的可枚舉的屬性,通過hasOwnProperty進行篩選能遍歷出自身可枚舉屬性
而使用Object.keys直接遍歷出的自身可枚舉屬性組成的數組
使用getOwnPropertyNames可以訪問自身可枚舉屬性與不可枚舉屬性

另外,還有大漠的文章參考,對于以上幾個方法介紹的很詳細。對象屬性的枚舉

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94740.html

相關文章

  • ECMAScript6(8):對象的擴展

    基本擴展 允許使用已有對象賦值定義對象字面量,并且只寫變量名即可 var name = Bob; var getName = function(){console.log(this.name);}; var person = {name, getName}; //相當于 //var person = { //name: Bob, //getName: function(){console.log...

    pingan8787 評論0 收藏0
  • JS基礎篇--JS中的可枚舉不可枚舉以及擴展

    摘要:在中,對象的屬性分為可枚舉和不可枚舉之分,它們是由屬性的值決定的。這是因為中內置的屬性是不可枚舉的,所以不能被訪問到。此對象不可擴展且指定的屬性名稱不存在。返回值一個數組,其中包含對象的可枚舉屬性和方法的名稱。 在JavaScript中,對象的屬性分為可枚舉和不可枚舉之分,它們是由屬性的enumerable值決定的。可枚舉性決定了這個屬性能否被for…in查找遍歷到。 一、怎么判斷屬性...

    dreamans 評論0 收藏0
  • 【基礎系列】javascript中的對象

    摘要:自定義對象是指由開發者在代碼中所創建的對象。繼承屬性是指在對象原型鏈中的屬性。與此同時,對象的屬性還具有一些特性可寫代表是否可以設置該對象所對應的該屬性的值。我們可以利用來判斷這個對象是否封閉,傳入一個對象,返回布爾值。 這次我們好好聊一聊對象這個東西,本次說的不是array,也不是function,而是object 基礎概念 對象是一種特殊的數據類型,這種數據類型還有其他的很多叫法...

    617035918 評論0 收藏0
  • JS學習之Object

    摘要:文中的多為構造函數原型對象屬性為函數的專屬屬性,表示函數的原型對象。關于各種數據類型的屬性的展示對象的構造器函數該屬性指向創建該對象原型的構造函數。對對象的凍結狀態的設置和判斷,前者讓凍結對象,后者判斷對象是否被凍結。 前言 上篇文章介紹了JS的對象,本文將介紹Object這個基類,主要介紹其屬性和方法(其實這些在MDN里都有^_^,點擊這里可以直通MDN)。好了廢話不多說了,直接開始...

    qujian 評論0 收藏0
  • ES6入門之對象的擴展

    摘要:循環遍歷對象自身的和繼承的可枚舉屬性不含屬性。返回一個數組,包含對象自身的所有屬性的鍵名。目前,只有對象方法的簡寫法可以讓引擎確認,定義的是對象的方法。showImg(https://user-gold-cdn.xitu.io/2019/5/21/16ada8456223b0e1); 1. 屬性的簡潔表示法 在ES6中 允許直接寫入變量和函數,作為對象的屬性和方法,使得代碼的書寫更為簡潔。...

    RiverLi 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<