列挙とオブジェクトのプロパティを横断ES6

1.Object.getOwnPropertyDescriptor()

説明:オブジェクトのプロパティのオブジェクトの説明について。

せOBJ = {FOO:123 }。
console.log(Object.getOwnPropertyDescriptor(OBJ、 'FOO'))

結果の表示:

{ 
    設定:
    列挙:
    値: 123 
    、書き込み可能:
    __proto__:オブジェクト
}

列挙プロパティがfalseの場合、それは特定の操作は、現在のプロパティを無視することを意味し、列挙可能プロパティと呼ばれます。

現在、4つの動作が無視ある列挙が偽の属性です。

  • 以下のために...ループ内のみ:オブジェクト自体を通過し、列挙プロパティを継承しています。
  • Object.keys():すべてのキー列挙プロパティのオブジェクト自体の名前を返します。使用して、このオブジェクトを通過しました!
  • JSON.stringify()のみオブジェクト自体は、列挙型プロパティをシリアル化することができます。
  • Object.assign():、列挙プロパティがfalseのオブジェクト自身の列挙可能プロパティのコピーだけを無視
Object.getOwnPropertyDescriptor(のObject.prototype 'のtoString')。列挙// falseに
 
Object.getOwnPropertyDescriptor([]、 '長さ')。列挙// falseに

// 用ようのtoString可算と長さのプロパティは、falseです...トラバースない両方のprototypeプロパティから継承されました。

2. Object.getOwnPropertyDescriptors()

Object.getOwnPropertyDescriptors 方法であって、指定されたオブジェクト自体のオブジェクトを記述するすべての属性(非継承された属性)。

CONST OBJ = {FOO:123、取得バー(){ リターン 'ABC' }}。
 
Object.getOwnPropertyDescriptors(OBJ)

// {FOO:
//     {値:123、
//       書き込み可能:真、
//       列挙:真、
//       設定:真} 
//    バー:
//     {得る:[機能:バー]、
//       設定:未定義
//       真:列挙
//       設定:真}}

上記のコード、Object.getOwnPropertyDescriptors(obj)メソッドがオブジェクトを返す、属性名は、すべての元のオブジェクトのプロパティ名であり、オブジェクトに対応するプロパティ値は、プロパティを記述することです。

 

3.  Object.setPrototypeOf()

オブジェクトのプロトタイプオブジェクトを設定します。

// フォーマット
Object.setPrototypeOf(オブジェクト、プロトタイプ)
 
// 使用 
CONST = O Object.setPrototypeOf({}、NULL ); 

// このメソッドは、次の関数と等価です。
関数(OBJ、プロト){    
    OBJ .__ proto__ = プロト;   
     戻りOBJ; 
}

例:

従って年= {}; 
年OBJ = {X:10 }。
Object.setPrototypeOf(Vそう)。
 
proto.y = 20 
proto.z = 40 ; 
 
obj.x // 10 
ドローのボリューム// 20 
obj.z // 40

注意:

  1. 最初の引数がオブジェクトでない場合は、自動的にオブジェクトに変換されます。最初のパラメータが返されるためしかし、その操作には何の効果もありません。

  2. 未定義のヌルをオブジェクトに変換することができないので、最初のパラメータが未定義またはnullである場合には、エラーになります。

4.  Object.getPrototypeOf()

方法およびObject.setPrototypeOfプロトタイプオブジェクトを読み取るためのオブジェクトをサポートする方法。

Object.getPrototypeOf(OBJ)。 
  1. パラメータがオブジェクトでない場合、オブジェクトは自動的に変換されます。

  2. パラメータが未定義またはnullの場合、彼らはオブジェクトに変換することができない、それはエラーになります。

5.  Superキーワード

このキーワードは、常に機能を指し、我々は知っている、現在のオブジェクト、ES6は、他の類似したキーワードを追加しているスーパーを現在のオブジェクトのを指して、プロトタイプオブジェクト

プロトFOO = {CONST: 'こんにちは' }; 
 
CONST OBJ = {    
    検索(){      
        戻りsuper.foo;    
    } 
}; 

Object.setPrototypeOf(OBJ、プロト); 
obj.find()// "ハロー" 
// 上記のコード、の間でオブジェクトOBJ方法を見つけ、プロトFOO特性super.fooプロトタイプオブジェクトへの参照によって。

メモ、スーパーキーワードは、プロトタイプオブジェクトを示し、唯一の他の場所であろう与えられることによって、対象の方法で使用することができます。

内部JavaScriptエンジン、super.foo 同等Object.getPrototypeOf(この).fooという(属性)またはObject.getPrototypeOf(この).foo.call(本)(方法)。

例:

プロト= CONST {    
    X: 'こんにちは' 
    FOO(){      
        にconsole.log(この.X);    
    } 
}; 
 
CONST OBJ = {    
    X: '世界' 
    FOO(){     
        super.foo();    
    } 
} 
 
オブジェクト.setPrototypeOf(OBJ、プロト); 
 
obj.foo()// 「世界」

// 上記のコード、プロトプロトタイプオブジェクトのsuper.foo点メソッドfooが、これはまだ出力されて、現在のオブジェクトobjに結合しました世界。

 

6.  Object.keys()、Object.values()、Object.entries()

Object.keys方法は、配列を返し、オブジェクト自体のメンバーは、キーパラメータ(継承されない)全てのトラバース(可算)属性です。

VAR OBJ = {FOO 'バー'、バズ:42 }。
Object.keys(OBJ)// [ "foo"という、 "バズ"] 

 

で導入されたES2017 Object.keysのサポートObject.valuesObject.entries、オブジェクトを横断するサプリメントとしてのためのために...リサイクル

Object.valuesメソッドは配列を返し、オブジェクト自体のメンバーは、パラメータ(継承されない)全てのトラバース(可算)キー属性です。

CONST OBJ = {100: 'A'、2 'B'、7 'C' }。
Object.values(OBJ)// [ "B"、 "C"、 "A"] 

上記のコードでは、という属性値は、数値に応じて、小から大へのトラバース配列はB、C、返すように、。

Object.valuesは、オブジェクト自身のプロパティを反復することができ返します。

 

Object.entriesメソッドは配列を返し、オブジェクト自体のメンバーは、パラメータ(継承されない)全てのトラバース(可算)キー属性アレイです。

CONST OBJ = {FOO 'バー'、バズ:42 }。
Object.entries(OBJ)// [[ "foo"という、 "バー"]、[ "バズ"、42]]

戻り値に加えて、同じではなく、この方法のObject.valuesの動作は基本的に同じです。

 

 

おすすめ

転載: www.cnblogs.com/houfee/p/11271003.html