摘要:判斷可枚舉屬性與不可枚舉屬性方法方法返回一個布爾值,表示指定的自身屬性是否可枚舉。
我們到MDN上搜索屬性的可枚舉性和所有權
可枚舉屬性是指內部可枚舉標志(enumerable)設置為true的屬性,自然不可枚舉屬性即是enumerable為false
我們看下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..in與Object.keys還是有區別的,區別就在于使用for...in還會遍歷出對象從原型鏈上繼承來的可枚舉屬性
通過Object.defineProperty定義的屬性,該標志值默認是false, 所以不可枚舉,通過for..in 和 Object.keys()都遍歷不到。
判斷可枚舉屬性與不可枚舉屬性方法:
propertyIsEnumerable(): 方法返回一個布爾值,表示指定的自身屬性是否可枚舉。(不包括原型鏈繼承的屬性)
區別以下方法:
使用 for...in迭代,遍歷出自身以及原型鏈上的可枚舉的屬性,通過hasOwnProperty進行篩選能遍歷出自身可枚舉屬性
而使用Object.keys直接遍歷出的自身可枚舉屬性組成的數組
使用getOwnPropertyNames可以訪問自身可枚舉屬性與不可枚舉屬性
另外,還有大漠的文章參考,對于以上幾個方法介紹的很詳細。對象屬性的枚舉
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94740.html
基本擴展 允許使用已有對象賦值定義對象字面量,并且只寫變量名即可 var name = Bob; var getName = function(){console.log(this.name);}; var person = {name, getName}; //相當于 //var person = { //name: Bob, //getName: function(){console.log...
摘要:在中,對象的屬性分為可枚舉和不可枚舉之分,它們是由屬性的值決定的。這是因為中內置的屬性是不可枚舉的,所以不能被訪問到。此對象不可擴展且指定的屬性名稱不存在。返回值一個數組,其中包含對象的可枚舉屬性和方法的名稱。 在JavaScript中,對象的屬性分為可枚舉和不可枚舉之分,它們是由屬性的enumerable值決定的。可枚舉性決定了這個屬性能否被for…in查找遍歷到。 一、怎么判斷屬性...
摘要:自定義對象是指由開發者在代碼中所創建的對象。繼承屬性是指在對象原型鏈中的屬性。與此同時,對象的屬性還具有一些特性可寫代表是否可以設置該對象所對應的該屬性的值。我們可以利用來判斷這個對象是否封閉,傳入一個對象,返回布爾值。 這次我們好好聊一聊對象這個東西,本次說的不是array,也不是function,而是object 基礎概念 對象是一種特殊的數據類型,這種數據類型還有其他的很多叫法...
摘要:文中的多為構造函數原型對象屬性為函數的專屬屬性,表示函數的原型對象。關于各種數據類型的屬性的展示對象的構造器函數該屬性指向創建該對象原型的構造函數。對對象的凍結狀態的設置和判斷,前者讓凍結對象,后者判斷對象是否被凍結。 前言 上篇文章介紹了JS的對象,本文將介紹Object這個基類,主要介紹其屬性和方法(其實這些在MDN里都有^_^,點擊這里可以直通MDN)。好了廢話不多說了,直接開始...
摘要:循環遍歷對象自身的和繼承的可枚舉屬性不含屬性。返回一個數組,包含對象自身的所有屬性的鍵名。目前,只有對象方法的簡寫法可以讓引擎確認,定義的是對象的方法。showImg(https://user-gold-cdn.xitu.io/2019/5/21/16ada8456223b0e1); 1. 屬性的簡潔表示法 在ES6中 允許直接寫入變量和函數,作為對象的屬性和方法,使得代碼的書寫更為簡潔。...
閱讀 2839·2021-09-28 09:45
閱讀 1511·2021-09-26 10:13
閱讀 908·2021-09-04 16:45
閱讀 3669·2021-08-18 10:21
閱讀 1094·2019-08-29 15:07
閱讀 2638·2019-08-29 14:10
閱讀 3151·2019-08-29 13:02
閱讀 2468·2019-08-29 12:31