ReflectとProxyの間に有意差はありますか?ProxyコンストラクタとReflectの違いは何ですか?
文書化されているものから、彼らがほとんど同じ機能を持っているようだ、離れてから:
- 一度に一つだけのトラップを指定することが可能な反映。
- プロキシがrevocableである。
- プロキシーがコンストラクターです。
上記のリストにすべての相違点がまとめられている場合は、その両方の理由がありますか?
ReflectとProxyの間に有意差はありますか?ProxyコンストラクタとReflectの違いは何ですか?
文書化されているものから、彼らがほとんど同じ機能を持っているようだ、離れてから:
上記のリストにすべての相違点がまとめられている場合は、その両方の理由がありますか?
ReflectとProxyはまったく異なる目的と機能を持っています。
MDN describes Proxy in that way:
Proxy
オブジェクトは、基本的な動作のためにカスタム動作(例えば、プロパティ・ルックアップ、割り当て、列挙、関数呼び出しなど)を定義するために使用されます。
は内蔵インターセプト可能のJavaScript操作するための方法を提供する目的で反映します。方法はproxy handlersと同じです。
すでに読んでいると思いますので、例を使用してさらに説明します。
const obj = {
a: 'foo',
b: 'bar',
};
は、あなたがそのようなプロパティアクセサを使用して、プロパティa
にアクセスすることができます:
console.log(Reflect.get(obj, 'a')); // 'foo'
:
console.log(obj.a); // 'foo'
は、あなたがそれを用いReflect.get()
方法を行うことができます
のは、あなたがオブジェクトを持っているとしましょう
このオブジェクトのプロキシを作成するには、プロキシコンストラクタ。 get
ハンドラを使用して、すべてのプロパティ参照をインターセプトします。さて、文字列'default'
で未定義のプロパティの結果を得るために、プロパティアクセサまたはReflect.get()
のいずれかを使用して
const proxy = new Proxy(obj, {
get(target, property) {
return property in target ? target[property] : 'default';
},
});
:
console.log(proxy.c); // 'default'
console.log(Reflect.get(proxy, 'c')); // 'default'
Proxyと一緒に素晴らしい仕事することができます反映します。たとえば、get
ハンドラのないプロキシを作成してReflect:
new Proxy(obj, {
get: Reflect.get,
});
を使用してプロキシを作成することができます