ES 6におけるオブジェクトのプロパティを横切ります

ES6オブジェクトのプロパティをトラバースする5つの方法があります。

1.for ...で

  • for...in継承とオブジェクト自体をループは(除く属性を挙げることができるSymbolプロパティ)。

    var o1 = { p1: 123 };
    
    var o2 = Object.create(o1, {
      p2: { value: "abc", enumerable: true }
    });
    
    for (p in o2) {
      console.info(p);
    }
    // p2
    // p1
    

2.Object.keys(OBJ)

  • Object.keys戻り値オブジェクト自身を含む配列、(継承されない)の特性は、(除くすべて列挙Symbolプロパティ)キー名を。

      var o1 = { p1: 123 };
    
      var o2 = Object.create(o1, {
    	p2: { value: "abc", enumerable: true }
      });
    
      console.log(Object.keys(o2))
      //[p2]
    

3.Object.getOwnPropertyNames(OBJ)

  • Object.getOwnPropertyNames戻り値は、すべてのオブジェクト自身のプロパティを含む配列(除くSymbolキー名を、プロパティを含むが、属性を列挙されません)。

     var o1 = { p1: 123 };
    
      var o2 = Object.create(o1, {
    	p2: { value: "abc", enumerable: true }
      });
    
      console.log(Object.getOwnPropertyNames(o2))
      //[p2]
    

4.Object.getOwnPropertySymbols(OBJ)

  • Object.getOwnPropertySymbolsオブジェクト自体のシンボルのすべてのキー属性の名前を含む配列を返します。

5.Reflect.ownKeys(OBJ)

  • Reflect.ownKeys関係なく、キー名の戻り値オブジェクト自体のすべてのキー名を含む配列を、Symbolまたは文字列、列挙かどうか。

注文のキー対象を横断する6.上記5つの方法はプロパティ・トラバーサルの同じ規則の対象となっています。

  • まず、すべての数字キーによって、値の昇順に配置されました。

  • 第二に、すべてのキーの文字列によって、時間の昇順に従って追加。

  • 追加時間に応じて昇順ですべてのキーを通して最終的シンボル。

    Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })
    // ['2', '10', 'b', 'a', Symbol()]
    
公開された170元の記事 ウォン称賛61 ビュー50000 +

おすすめ

転載: blog.csdn.net/NDKHBWH/article/details/103886794