属性の列挙可能性と非列挙性
2141 ワード
MDNで属性のエニュメレート・所有権を検索します.
エニュメレート・属性とは、内部エニュメレート・マーク(
JavaScriptの基本タイプと基本タイプの小包の対象を見ます. 6種類の Boolean String Number null undefined Symbol もう一つの概念は配列の字面量(Aray) ブール文字量(Boolean) 浮動小数点デジタル面量(Float) 整数(Int) オブジェクトの字面量(Object) RegExp 文字列の字面量(String) はい、もういいです.なぜこれらを言いますか?問題を投げました.以上の属性は列挙できますか?
次の例を見ます.
エニュメレート・属性とエニュメレート・属性の判断方法:
違いは以下の方法です.
また、大砂漠の文章の参考として、上記のいくつかの方法について詳しく紹介しました.対象属性の列挙です.
エニュメレート・属性とは、内部エニュメレート・マーク(
enumerable
)がtrue
に設定された属性であり、自然エニュメレート・属性であるenumerable
がfalse
である.JavaScriptの基本タイプと基本タイプの小包の対象を見ます.
は、非オブジェクトであり、方法がないデータである.JavaScript
には6つの基本的なタイプがあります.string,number,boolean,null,undefined,symbol
はnull undefined
を除いて、すべての基本的なタイプの値にはこの
があります.String
Boolean
Number
は7つの異なるタイプの値があります.Symbol
データタイプJavaScript
オブジェクト
です.以下のような字面量があります.次の例を見ます.
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"}"
Object
属性を除いて他の全てが巡回されていることが見られ、
を使用することはsex
を使用することによって、オブジェクトがプロトタイプチェーンから継承されたエニュメレート・プロパティーを遍歴することにも違いがある.for..in
によって定義された属性は、デフォルトはObject.keys
であるので、列挙することができず、for...in
およびObject.defineProperty
を介して全部巡回していない.エニュメレート・属性とエニュメレート・属性の判断方法:
false
:方法はブール値を返し、指定された自身の属性がエニュメレート・属性であるかどうかを示す.(プロトタイプチェーン継承の属性は含まない)違いは以下の方法です.
for..in
反復を使用して、自身およびプロトタイプチェーン上のエニュメレート・属性を遍歴し、Object.keys()
によってフィルタリングすることによって、自身のエニュメレート・属性を遍歴することができ、propertyIsEnumerable()
を使用して直接に遍歴した自己エニュメレート・属性からなる行列を使用して、for...in
を使用して、自身のエニュメニュメニュメニュメニュメレーまた、大砂漠の文章の参考として、上記のいくつかの方法について詳しく紹介しました.対象属性の列挙です.