摘要:判斷可枚舉屬性與不可枚舉屬性方法方法返回一個(gè)布爾值,表示指定的自身屬性是否可枚舉。
我們到MDN上搜索屬性的可枚舉性和所有權(quán)
可枚舉屬性是指內(nèi)部可枚舉標(biāo)志(enumerable)設(shè)置為true的屬性,自然不可枚舉屬性即是enumerable為false
我們看下JavaScript基本類型和基本類型包裹對(duì)象
基本類型是指非對(duì)象且無(wú)方法的數(shù)據(jù)。
JavaScript有6種基本類型:string,number,boolean,null,undefined,symbol
除了null和undefined外,所有基本類型值都有包裹這個(gè)基本類型值的等價(jià)對(duì)象:
String Boolean Number Symbol
JavaScript有7種不同類型的值
六種 原型 數(shù)據(jù)類型
Boolean
String
Number
null
undefined
Symbol
Object對(duì)象
還有一個(gè)概念就是字面量,有以下字面量
數(shù)組字面量(Array)
布爾字面量 (Boolean)
浮點(diǎn)數(shù)字面量 (Float)
整數(shù) (Int)
對(duì)象字面量 (Object)
RegExp
字符串字面量 (String)
好了好了扯遠(yuǎn)了,為什么說(shuō)這些呢,拋出問題,以上屬性是否可枚舉呢?
下面來(lái)看一個(gè)例子:
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..in與Object.keys還是有區(qū)別的,區(qū)別就在于使用for...in還會(huì)遍歷出對(duì)象從原型鏈上繼承來(lái)的可枚舉屬性
通過(guò)Object.defineProperty定義的屬性,該標(biāo)志值默認(rèn)是false, 所以不可枚舉,通過(guò)for..in 和 Object.keys()都遍歷不到。
判斷可枚舉屬性與不可枚舉屬性方法:
propertyIsEnumerable(): 方法返回一個(gè)布爾值,表示指定的自身屬性是否可枚舉。(不包括原型鏈繼承的屬性)
區(qū)別以下方法:
使用 for...in迭代,遍歷出自身以及原型鏈上的可枚舉的屬性,通過(guò)hasOwnProperty進(jìn)行篩選能遍歷出自身可枚舉屬性
而使用Object.keys直接遍歷出的自身可枚舉屬性組成的數(shù)組
使用getOwnPropertyNames可以訪問自身可枚舉屬性與不可枚舉屬性
另外,還有大漠的文章參考,對(duì)于以上幾個(gè)方法介紹的很詳細(xì)。對(duì)象屬性的枚舉
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94740.html
基本擴(kuò)展 允許使用已有對(duì)象賦值定義對(duì)象字面量,并且只寫變量名即可 var name = Bob; var getName = function(){console.log(this.name);}; var person = {name, getName}; //相當(dāng)于 //var person = { //name: Bob, //getName: function(){console.log...
摘要:在中,對(duì)象的屬性分為可枚舉和不可枚舉之分,它們是由屬性的值決定的。這是因?yàn)橹袃?nèi)置的屬性是不可枚舉的,所以不能被訪問到。此對(duì)象不可擴(kuò)展且指定的屬性名稱不存在。返回值一個(gè)數(shù)組,其中包含對(duì)象的可枚舉屬性和方法的名稱。 在JavaScript中,對(duì)象的屬性分為可枚舉和不可枚舉之分,它們是由屬性的enumerable值決定的。可枚舉性決定了這個(gè)屬性能否被for…in查找遍歷到。 一、怎么判斷屬性...
摘要:自定義對(duì)象是指由開發(fā)者在代碼中所創(chuàng)建的對(duì)象。繼承屬性是指在對(duì)象原型鏈中的屬性。與此同時(shí),對(duì)象的屬性還具有一些特性可寫代表是否可以設(shè)置該對(duì)象所對(duì)應(yīng)的該屬性的值。我們可以利用來(lái)判斷這個(gè)對(duì)象是否封閉,傳入一個(gè)對(duì)象,返回布爾值。 這次我們好好聊一聊對(duì)象這個(gè)東西,本次說(shuō)的不是array,也不是function,而是object 基礎(chǔ)概念 對(duì)象是一種特殊的數(shù)據(jù)類型,這種數(shù)據(jù)類型還有其他的很多叫法...
摘要:文中的多為構(gòu)造函數(shù)原型對(duì)象屬性為函數(shù)的專屬屬性,表示函數(shù)的原型對(duì)象。關(guān)于各種數(shù)據(jù)類型的屬性的展示對(duì)象的構(gòu)造器函數(shù)該屬性指向創(chuàng)建該對(duì)象原型的構(gòu)造函數(shù)。對(duì)對(duì)象的凍結(jié)狀態(tài)的設(shè)置和判斷,前者讓凍結(jié)對(duì)象,后者判斷對(duì)象是否被凍結(jié)。 前言 上篇文章介紹了JS的對(duì)象,本文將介紹Object這個(gè)基類,主要介紹其屬性和方法(其實(shí)這些在MDN里都有^_^,點(diǎn)擊這里可以直通MDN)。好了廢話不多說(shuō)了,直接開始...
摘要:循環(huán)遍歷對(duì)象自身的和繼承的可枚舉屬性不含屬性。返回一個(gè)數(shù)組,包含對(duì)象自身的所有屬性的鍵名。目前,只有對(duì)象方法的簡(jiǎn)寫法可以讓引擎確認(rèn),定義的是對(duì)象的方法。showImg(https://user-gold-cdn.xitu.io/2019/5/21/16ada8456223b0e1); 1. 屬性的簡(jiǎn)潔表示法 在ES6中 允許直接寫入變量和函數(shù),作為對(duì)象的屬性和方法,使得代碼的書寫更為簡(jiǎn)潔。...
閱讀 2831·2021-09-28 09:45
閱讀 1507·2021-09-26 10:13
閱讀 897·2021-09-04 16:45
閱讀 3661·2021-08-18 10:21
閱讀 1084·2019-08-29 15:07
閱讀 2633·2019-08-29 14:10
閱讀 3147·2019-08-29 13:02
閱讀 2459·2019-08-29 12:31