問題タブ [es6-proxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Using ES6 Proxies to hide private properties
I'm trying to create a function that hides private properties on Objects as well as possible. I would define private properties here as those that begin with an underscore, eg. _password
.
Below is what I've got so far (thanks to Nicolas Bevacqua's great intro to proxies).
Now I was wondering:
- Am I covering all bases with the following code? Or am I missing an important proxy trap through which the objects could still be accessed?
- Is this the right way to use the
Reflect
methods in conjunction with a proxy? And do I even need them here? - Are the values I return for private properties real enough to let people think that the property really does not exist?
My function so far:
PS: For native browser support, you might have to look at it in MS Edge or Firefox Dev Edition.
javascript - JS Proxying HTML5 キャンバス コンテキスト
抽象化されたメソッドが実際にキャンバスに描画されることをテストできるように、キャンバス API をプロキシすることを望んでいますが、プロキシ後にエラーが発生するという問題が発生しています。
'strokeStyle' setter called on an object that does not implement interface CanvasRenderingContext2D
このコードは簡略化されていますが、同じエラーがスローされます。
何かご意見は?
javascript - Chrome での ES6 プロキシの奇妙な動作
この単純なコードを実行しています:
Firefox [nightly 46] では、期待どおりの出力が得られます。
ただし、Google Chrome [canary 49] では、奇妙なことがログに記録されます。
ここで何が起こっているのか分かりますか?
javascript - ID を保持するメンブレン プロキシの使用例は何ですか?
ES6 Proxies について読んでいたとき、この例を見るまでは理解するのに十分簡単に思えました。
私は困惑しています。私は彼らが使用する「ウェット/ドライ」という用語を理解していません。また、特に見つけられないように見えるため、いつこれが理想的な選択になるのかわかりません.
これがどのようなシナリオで発生するかについて、誰かが簡単に説明できますか?
javascript - プレーンな配列でプロキシを使用する
次のコードを検討してください。
app.mediaLibrary.media.push(new app.mediaLibrary.Media("", ""))
コンソールで呼び出すたびに、次のように表示されます。
これが表示される理由は理解できますが、どのようにコーディングすればよいでしょうか? 私のトラップは internal( push
, length
) と external calls( [0]=...
) によってトリガーされているようで、それらを区別する方法がわかりません。何か案は?
javascript - JavaScript プロキシの代替手段
を含むProxy
カスタマイズされたクラスで使用したい. ES6以降でしか使えないので、代替実装はないのだろうか。ObservableList
Array
Proxy
私の要件は、オブザーバーが変更されると(通知されるのではなく)更新されることですObservableList
。これにより、オブザーバーは常に何らかのフィルタリングまたはマッピング方法でオブザーバブルと一致します。
プロキシを使用した私の実装は、https: //jsfiddle.net/ovilia/tLmbptr0/3/ で入手できます。
javascript - ネストされた ES6 プロキシが期待どおりに機能しない
次のように、のIDを提供するときに特定のAPIメソッドを呼び出すことができるAPIクライアントに取り組んでいますfoo
:
開発者の利便性のために、カスタム プロキシ オブジェクトを実装しようとしています。
しばらく検索した後、fooId
両方の作業方法をサポートするためにメソッド呼び出しの最初の引数として挿入する必要があるため、ES6 プロキシが最適であると考えました。
そのため、次のコードを作成しました。のオブジェクト プロパティFoo.myFoos
が呼び出されると (例: Foo.myFoos.example
)、そのプロパティが で検索され_myFooItems
、存在する場合は別の Proxy オブジェクトが返されます。その
オブジェクトで
メソッドが呼び出されると、 のプロパティで検索され、見つかった場合は、メソッドが最初の引数として呼び出されます。
つまり、できるはずです。Foo
Foo
myFooId
Foo.myFoos.example.parentMethodX('bar', 'baz')
コードを実行して登録しようとするとfoo
(上記のコードは Node>=6.2.0 でそのまま動作します)、次のエラーがスローされます。
メソッドが指定されていないのに、なぜ 2 番目のプロキシがメソッドを呼び出そうとするのかを考えるのに多くの時間を費やした後、私は最終的にあきらめました。呼び出された場合にメソッドexampleFoo
を受け入れる Proxy オブジェクトになることを期待しています。
ここでの実際の動作の原因は何ですか?Foo
javascript - Proxy を ES2015 クラスで拡張できますか?
次のように、プロキシを拡張しようとしました。
Babel を使用して ES5 にトランスパイルしたところ、ブラウザで次のエラーが表示されました。
それが指しているコード行を見ました。問題のあるコード行を指す矢印が付いたコードのその部分は次のとおりです。
このエラーが発生する理由を知っている人はいますか? これはBabelのバグですか?Proxy を拡張しようとするとどうなりますか?
javascript - ES6: ハーモニープロキシ: `tracedObj.squared(9)` が未定義を返すのはなぜですか?
tracedObj.squared(9)
未定義を返すのはなぜですか?
これは、それ自体のオブジェクトでメソッドを呼び出した後、呼び出しobj
に対して間違ったスコープにあるというスコープに関係している可能性があります。this
squared
コード
出力
ノード v4.4.3 を使用しています (これらを使用するには時期尚早ですか?)
コードを実行する
次のようにコマンドを実行する必要があります。
node --harmony-proxies --harmony ./AOPTest.js