整理学習——ES 6のReflect
5908 ワード
記事の目次簡単な説明 Reflectオブジェクトの方法 Reflect.apply 異常 Reflect.co nstruct 異常 Reflect.defineProperty 異常 Reflect.deleteProperty 異常 Reflect.get 異常 Reflect.getOwn PropertyDescripter(Obj,prop) 異常 Reflect.get ProttypeOf 異常 Reflect.has 異常 Reflect.isExtenseble 異常 Reflect.ownKeys 異常 Refledct.preventExtensions() 異常 Reflect.set 異常 Reflect.set ProttypeOf 異常 とObjectの方法の違いは を統合します.
簡単に説明する
ReflectもES 6がオブジェクトを操作するために提供する新しいAPIである.ReflectはJavaScriptをブロックする操作を提供する内蔵オブジェクトであり、これらの方法はプロセッサオブジェクトの方法と同じである.関数オブジェクトではないので、作成できません.同時にReflectのすべての属性と方法は静的である.Reflectオブジェクトの設計目的はこれらがあります.はObjectオブジェクトのいくつかを明らかに言語内部に属する方法をReflectオブジェクトに置く.
現在,ある方法はObjectとReflectオブジェクトに同時に展開されており,将来の新しい方法はReflectオブジェクトに値を配置する.
により、いくつかのObject方法の戻り結果がより合理的になるように修正される.(例えば、 は、Object動作を関数挙動に変化させます.例えば、 Reflectオブジェクトの方法はProxyオブジェクトの方法に対応しており、Proxyオブジェクトの方法であれば、Reflectオブジェクトに対応する方法を見つけることができる.Proxyオブジェクトをより便利に対応するReflectメソッドを呼び出すことができ、デフォルトの動作を完了します. ObjectとReflectの違い:
Object
Reflect
まちがった結果にあう
エラーを申し込む
falseを返します
操作
命令文
関数の挙動
Reflectオブジェクトの方法
Reflectオブジェクトの方法はすべて静的方法である.Proxyオブジェクトのハンドルオブジェクトの関数と似ていますが、違いがあります.
Reflect.apply(targt,thisAgment,argments List)
起動パラメータとして、ボランティア関数を呼び出します.Funtion.prototype.applyと機能が似ています.target:ターゲット関数thisAgment:target関数が呼び出されたときに結合されたthisオブジェクトargments List:target関数が呼び出されたときに入ってきた参加リストで、このパラメータはクラスの配列のオブジェクトであるべきです.
異常
タレッジオブジェクトが起動できない場合は、TypeErrをスローします.
Reflect.co nstruct(target,argments List[,newTarget])
構造関数をnew操作することは、
異常
targetまたはnew TargetがコンストラクタでないとTypeErrを投げます.
Reflect.defineProperty(targt,propertyKey,atributes)
基本的にはObject.defineProperty()と同等であり、唯一の違いはBoolean値を返すことである.属性が成功に定義されているかどうかを表します.target:ターゲットのpropertyKey:定義または変更する属性の名前.atributes:属性の定義または変更の説明.
異常
もしtargetがObjectではないなら、TypeErrを投げます.
Reflect.deleteProperty(target,propertyKey)
関数としてのdeleteオペレータは、
異常
もしtargetがObjectでないなら、TypeErrを投げます.
Reflect.get(targt,propertyKey[,receiver])
ターゲットにある属性の値を取得すると、target[name]に似ています.属性の値を返します.ない場合はundefinedを返します.target:対象のpropertyKey:取得したい値のキー名receiver:targetオブジェクトにgetterが指定されている場合、receiverはgetter呼び出し時のthis値となります.
異常
ターゲット値がObjectでない場合、Type Errをスローします.
Reflect.getOwn PropertyDescripter(Obj,prop)
Object.getOwn PropertyDescriptor()方法と似ています.与えられたオブジェクトの自身の属性の属性記述子を返します.プロトタイプチェーンの属性ではありません.対応する記述子オブジェクトを返します.そうでなければundefinedを返します.対象オブジェクトprop:ディスクリプタの属性名または対応するSymbolタイプを取得する.
異常
もしtargetがObjectタイプではないなら、Type Errorを投げます.
Reflect.get ProttypeOf(taget)
指定したオブジェクトの原型(内部の[Prottype])を返します.Object.get ProttypeOf()と同じです.与えられたオブジェクトのプロトタイプを返します.引き継ぎ属性がない場合は、null targetに戻ります.ターゲットオブジェクト
異常
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.has(targt、propertyKey)
オブジェクトに対応するキーがあるかどうかを判断します.この属性が存在するかどうかを示すBooleanを返します.ターゲットのpropertyKey:キー名
異常
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.isExtenseble(target)
オブジェクトが拡張可能かどうかを判断します.Object.isExtensioble()と似ていますが、最初のパラメータがオブジェクトでない場合はType Errを投げます.Object.isExtensioble()は最初のパラメータをオブジェクトに強制的に変換します.この関数は、Boolean値を返します.オブジェクトが拡張可能かどうかを表します.
異常
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.ownKeys(target)
自身の属性キーを含むすべての属性キーを返します.継承属性は含まれていません.Object.keys()に似ていますが、enumerableの影響を受けません.target:目標オブジェクトの戻り値は、
targetがObjectタイプでない場合、TypeErrをスローします.
Refledct.prevent Extensions()
新しい属性がオブジェクトに追加されるのを阻止します.Object.prevent Extensions()と似ています.最初のパラメータがオブジェクトではない場合、この関数はType Errorを投げます.Object.prevent Extensions()はオブジェクトに強制的に変換します.
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.set(targt,propertyKey,value[,receiver])
値を属性の関数に割り当てます.Booleanを返します.更新の成功を表します.target:対象のpropertyKey:設定が必要な属性名value:設定された値receiver:オプション、setter関数のthis値
異常
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.set ProttypeOf(targt、prototype)
プロトタイプは新しいプロトタイプのオブジェクトを設定するか、nullとするか、Object.set ProttypeOf()と似ていますが、戻り値の違いがあります.Booleanを返します.設定が成功したかどうかを表します.target:対象のprototype:設定値、対象またはnull
異常
targetがオブジェクトでない場合、または設定された値がオブジェクトでもnullでもない場合、TypeErrorをスローします.
Objectとの方法の違いを統合します.
関数
違い点
Object
Reflect
isExtensioble()prevent Extensions()
最初のパラメータはオブジェクトではありません.
オブジェクトに強制変換
Type Errorを投げる
属性キーの取得
enumerableを受けていますか
Object.keys()は影響を受けます.
Reflect.ownKeys()は影響を受けません.
defineProperty()
戻り値
成功:オブジェクトに戻ることに失敗しました.すなわち、プロパティは成功に定義されていません.
Booleanを返します.成功するかどうかを表します.
参考資料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Object/Reflecthttp://caibaojian.com/es6/proxy.html
簡単に説明する
ReflectもES 6がオブジェクトを操作するために提供する新しいAPIである.ReflectはJavaScriptをブロックする操作を提供する内蔵オブジェクトであり、これらの方法はプロセッサオブジェクトの方法と同じである.関数オブジェクトではないので、作成できません.同時にReflectのすべての属性と方法は静的である.Reflectオブジェクトの設計目的はこれらがあります.
現在,ある方法はObjectとReflectオブジェクトに同時に展開されており,将来の新しい方法はReflectオブジェクトに値を配置する.
Object.defineProperty(obj, name, desc)
は、属性を定義できないときにエラーを投げ、Reflect.defineProperty(obj, name, desc)
はfalseに戻る)name in obj
とdelete obj[name]
と、ReflectにはReflect.has(obj, name)
とReflect.deleteProperty(obj, name)
とを使用します.Object
Reflect
まちがった結果にあう
エラーを申し込む
falseを返します
操作
命令文
関数の挙動
Reflectオブジェクトの方法
Reflectオブジェクトの方法はすべて静的方法である.Proxyオブジェクトのハンドルオブジェクトの関数と似ていますが、違いがあります.
Reflect.apply(targt,thisAgment,argments List)
起動パラメータとして、ボランティア関数を呼び出します.Funtion.prototype.applyと機能が似ています.target:ターゲット関数thisAgment:target関数が呼び出されたときに結合されたthisオブジェクトargments List:target関数が呼び出されたときに入ってきた参加リストで、このパラメータはクラスの配列のオブジェクトであるべきです.
異常
タレッジオブジェクトが起動できない場合は、TypeErrをスローします.
Reflect.co nstruct(target,argments List[,newTarget])
構造関数をnew操作することは、
new target(...args)
を実行することに相当する.target関数を構成関数として、argments Listを初期化パラメータとするオブジェクトの例を返します.target:実行されるターゲットコンストラクタargments List:クラス配列、ターゲットコンストラクタ呼び出し時のパラメータ.newTarget:オプションで、オブジェクトのプロトタイプオブジェクトを新規作成し、new.targtオペレータを参照して、デフォルト値はtargtです.異常
targetまたはnew TargetがコンストラクタでないとTypeErrを投げます.
Reflect.defineProperty(targt,propertyKey,atributes)
基本的にはObject.defineProperty()と同等であり、唯一の違いはBoolean値を返すことである.属性が成功に定義されているかどうかを表します.target:ターゲットのpropertyKey:定義または変更する属性の名前.atributes:属性の定義または変更の説明.
異常
もしtargetがObjectではないなら、TypeErrを投げます.
Reflect.deleteProperty(target,propertyKey)
関数としてのdeleteオペレータは、
delete target[name]
を実行するのに相当する.Booleanを返します.削除に成功したかどうかを表します.ターゲットのpropertyKey:削除する属性の名前.異常
もしtargetがObjectでないなら、TypeErrを投げます.
Reflect.get(targt,propertyKey[,receiver])
ターゲットにある属性の値を取得すると、target[name]に似ています.属性の値を返します.ない場合はundefinedを返します.target:対象のpropertyKey:取得したい値のキー名receiver:targetオブジェクトにgetterが指定されている場合、receiverはgetter呼び出し時のthis値となります.
異常
ターゲット値がObjectでない場合、Type Errをスローします.
Reflect.getOwn PropertyDescripter(Obj,prop)
Object.getOwn PropertyDescriptor()方法と似ています.与えられたオブジェクトの自身の属性の属性記述子を返します.プロトタイプチェーンの属性ではありません.対応する記述子オブジェクトを返します.そうでなければundefinedを返します.対象オブジェクトprop:ディスクリプタの属性名または対応するSymbolタイプを取得する.
異常
もしtargetがObjectタイプではないなら、Type Errorを投げます.
Reflect.get ProttypeOf(taget)
指定したオブジェクトの原型(内部の[Prottype])を返します.Object.get ProttypeOf()と同じです.与えられたオブジェクトのプロトタイプを返します.引き継ぎ属性がない場合は、null targetに戻ります.ターゲットオブジェクト
異常
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.has(targt、propertyKey)
オブジェクトに対応するキーがあるかどうかを判断します.この属性が存在するかどうかを示すBooleanを返します.ターゲットのpropertyKey:キー名
異常
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.isExtenseble(target)
オブジェクトが拡張可能かどうかを判断します.Object.isExtensioble()と似ていますが、最初のパラメータがオブジェクトでない場合はType Errを投げます.Object.isExtensioble()は最初のパラメータをオブジェクトに強制的に変換します.この関数は、Boolean値を返します.オブジェクトが拡張可能かどうかを表します.
Reflect.isExtensible(1);
//result: Uncaught TypeError: Reflect.isExtensible called on non-object
Object.isExtensible(1);
//result: false
ターゲット異常
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.ownKeys(target)
自身の属性キーを含むすべての属性キーを返します.継承属性は含まれていません.Object.keys()に似ていますが、enumerableの影響を受けません.target:目標オブジェクトの戻り値は、
Object.getOwnPropertyNames(target)
.concat(
Object.getOwnPropertySymbols(target)
)
異常targetがObjectタイプでない場合、TypeErrをスローします.
Refledct.prevent Extensions()
新しい属性がオブジェクトに追加されるのを阻止します.Object.prevent Extensions()と似ています.最初のパラメータがオブジェクトではない場合、この関数はType Errorを投げます.Object.prevent Extensions()はオブジェクトに強制的に変換します.
Reflect.preventExtensions(1);
//result: Uncaught TypeError: Reflect.preventExtensions called on non-object
Object.preventExtensions(1);
//result: false
異常targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.set(targt,propertyKey,value[,receiver])
値を属性の関数に割り当てます.Booleanを返します.更新の成功を表します.target:対象のpropertyKey:設定が必要な属性名value:設定された値receiver:オプション、setter関数のthis値
異常
targetがObjectタイプでない場合、TypeErrをスローします.
Reflect.set ProttypeOf(targt、prototype)
プロトタイプは新しいプロトタイプのオブジェクトを設定するか、nullとするか、Object.set ProttypeOf()と似ていますが、戻り値の違いがあります.Booleanを返します.設定が成功したかどうかを表します.target:対象のprototype:設定値、対象またはnull
異常
targetがオブジェクトでない場合、または設定された値がオブジェクトでもnullでもない場合、TypeErrorをスローします.
Objectとの方法の違いを統合します.
関数
違い点
Object
Reflect
isExtensioble()prevent Extensions()
最初のパラメータはオブジェクトではありません.
オブジェクトに強制変換
Type Errorを投げる
属性キーの取得
enumerableを受けていますか
Object.keys()は影響を受けます.
Reflect.ownKeys()は影響を受けません.
defineProperty()
戻り値
成功:オブジェクトに戻ることに失敗しました.すなわち、プロパティは成功に定義されていません.
Booleanを返します.成功するかどうかを表します.
参考資料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Object/Reflecthttp://caibaojian.com/es6/proxy.html