問題タブ [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.

0 投票する
2 に答える
1223 参照

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:

  1. 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?
  2. Is this the right way to use the Reflect methods in conjunction with a proxy? And do I even need them here?
  3. 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.

http://jsfiddle.net/bkd7mde7/1/

0 投票する
1 に答える
805 参照

javascript - JS Proxying HTML5 キャンバス コンテキスト

抽象化されたメソッドが実際にキャンバスに描画されることをテストできるように、キャンバス API をプロキシすることを望んでいますが、プロキシ後にエラーが発生するという問題が発生しています。

'strokeStyle' setter called on an object that does not implement interface CanvasRenderingContext2D

このコードは簡略化されていますが、同じエラーがスローされます。

何かご意見は?

0 投票する
1 に答える
93 参照

javascript - Chrome での ES6 プロキシの奇妙な動作

この単純なコードを実行しています:

Firefox [nightly 46] では、期待どおりの出力が得られます。

ただし、Google Chrome [canary 49] では、奇妙なことがログに記録されます。

ここで何が起こっているのか分かりますか?

0 投票する
1 に答える
478 参照

javascript - ID を保持するメンブレン プロキシの使用例は何ですか?

ES6 Proxies について読んでいたとき、この例を見るまでは理解するのに十分簡単に​​思えました。

私は困惑しています。私は彼らが使用する「ウェット/ドライ」という用語を理解していません。また、特に見つけられないように見えるため、いつこれが理想的な選択になるのかわかりません.

これがどのようなシナリオで発生するかについて、誰かが簡単に説明できますか?

0 投票する
1 に答える
97 参照

javascript - プレーンな配列でプロキシを使用する

次のコードを検討してください。

app.mediaLibrary.media.push(new app.mediaLibrary.Media("", "")) コンソールで呼び出すたびに、次のように表示されます。

これが表示される理由は理解できますが、どのようにコーディングすればよいでしょうか? 私のトラップは internal( push, length) と external calls( [0]=...) によってトリガーされているようで、それらを区別する方法がわかりません。何か案は?

0 投票する
3 に答える
2389 参照

javascript - JavaScript プロキシの代替手段

を含むProxyカスタマイズされたクラスで使用したい. ES6以降でしか使えないので、代替実装はないのだろうか。ObservableListArrayProxy

私の要件は、オブザーバーが変更されると(通知されるのではなく)更新されることですObservableList。これにより、オブザーバーは常に何らかのフィルタリングまたはマッピング方法でオブザーバブルと一致します。

プロキシを使用した私の実装は、https: //jsfiddle.net/ovilia/tLmbptr0/3/ で入手できます。

0 投票する
2 に答える
794 参照

javascript - ネストされた ES6 プロキシが期待どおりに機能しない

次のように、のIDを提供するときに特定のAPIメソッドを呼び出すことができるAPIクライアントに取り組んでいますfoo:

開発者の利便性のために、カスタム プロキシ オブジェクトを実装しようとしています。

しばらく検索した後、fooId両方の作業方法をサポートするためにメソッド呼び出しの最初の引数として挿入する必要があるため、ES6 プロキシが最適であると考えました。
そのため、次のコードを作成しました。のオブジェクト プロパティFoo.myFoosが呼び出されると (例: Foo.myFoos.example)、そのプロパティが で検索され_myFooItems、存在する場合は別の Proxy オブジェクトが返されます。その
オブジェクトで メソッドが呼び出されると、 のプロパティで検索され、見つかった場合は、メソッドが最初の引数として呼び出されます。 つまり、できるはずです。FooFoomyFooId
Foo.myFoos.example.parentMethodX('bar', 'baz')

コードを実行して登録しようとするとfoo(上記のコードは Node>=6.2.0 でそのまま動作します)、次のエラーがスローされます。

メソッドが指定されていないのに、なぜ 2 番目のプロキシがメソッドを呼び出そうとするのかを考えるのに多くの時間を費やした後、私は最終的にあきらめました。呼び出された場合にメソッドexampleFooを受け入れる Proxy オブジェクトになることを期待しています。 ここでの実際の動作の原因は何ですか?Foo

0 投票する
6 に答える
13961 参照

javascript - Proxy を ES2015 クラスで拡張できますか?

次のように、プロキシを拡張しようとしました。

Babel を使用して ES5 にトランスパイルしたところ、ブラウザで次のエラーが表示されました。

それが指しているコード行を見ました。問題のあるコード行を指す矢印が付いたコードのその部分は次のとおりです。

このエラーが発生する理由を知っている人はいますか? これはBabelのバグですか?Proxy を拡張しようとするとどうなりますか?

0 投票する
1 に答える
162 参照

javascript - ES6: ハーモニープロキシ: `tracedObj.squared(9)` が未定義を返すのはなぜですか?

tracedObj.squared(9)未定義を返すのはなぜですか?

これは、それ自体のオブジェクトでメソッドを呼び出した後、呼び出しobjに対して間違ったスコープにあるというスコープに関係している可能性があります。thissquared

コード

出力

ノード v4.4.3 を使用しています (これらを使用するには時期尚早ですか?)

コードを実行する

次のようにコマンドを実行する必要があります。

node --harmony-proxies --harmony ./AOPTest.js