問題タブ [ecmascript-harmony]

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 に答える
1268 参照

javascript - ECMAScriptのオブジェクトプロパティ定数?

キーワードで定数を指定できるという点で、ECMAScriptHarmonyの提案を見てきましたconst。ただし、ブロックスコープ(つまり、FunctionBodyおよびProgram)でのみ使用できるようです。定数をオブジェクトプロパティとして定義する方法はありますか(想像してくださいmyObj.STATUS_OK)?

properties提案された方法は経由で使用することだと思いますObject.definePropert(y/ies)が、それはあまり便利ではないようですが、今はそうですか?

0 投票する
8 に答える
19215 参照

javascript - ECMAScript:Harmony / ES6 から JavaScript コンパイラ

JavaScriptに関するPeterの記事を読んだ後、私は気づきました

Brendan Eich は、Harmony の目標の 1 つは、to-JavaScript コンパイラーのより良いターゲットになることであると述べました。

現在、あいまいなES:Harmony準拠の 2 つの一般的なコンパイラがあります。

CoffeeScript にはある程度のコンプライアンスがありますが、ES:Harmony コンパイラとして設計されていないため、この目的には役に立ちません。

Tracuer は ES:Harmony 仕様により厳密に固執しているようですが、完全な ES:Harmony コンパイラになるつもりかどうかはわかりません。

目的は ES6 を ES3 にコンパイルすることであるため、ES5 の機能もサポートする必要があります (おそらく、ES5 を ES3 にコンパイルするか、ES6 を ES3 にコンパイルするかを切り替える必要があります)。

  1. 現在、完全な ES:Harmony to ES3 コンパイラの作成を目指している他のプロジェクトはありますか?
  2. 標準が若い/不安定/流動的であることを知って、そのようなコンパイラを書き始めるのは賢明ですか?
  3. 現在、ES5 -> ES3 コンパイラはありますか?

Traceur メーリング リストに質問を残しました。

このようなコンパイラの目的は、ES3 との下位互換性です。ES3 での ES5 および ES6 の完全なエミュレーションではありません。

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

javascript - Javascript proxies: node-proxy, Harmony, mixed objects with magic getters and setters... in Coffeescript?

I would like to have a proxied object with methods and private variables attached to it.

That is to say, all normal object properties:

with some prototypes:

where enumeration skips private variables/functions:

and get/set will be run through a magic getter/setter:

So far I have this hokey Coffeescript using node-proxy. Any better answers?

produces

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

javascript - nowjsでみんなのポケットを拡張できないのはなぜですか?

みんなのpocketnowjsに機能を提供しようとしています。_.extend私はみんなのポケット、すなわち ingによってそうしたいと思いeveryone.nowます。私が理解できない何らかの理由_.extendで、クライアント側で機能を適切に提供できません。

これは私の現在のコードです:

サーバー側とクライアント側の両方で、問題なく実行できますnow.foo()。一方、は定義されていないnow.bar()ため失敗します。now.barこれは、クライアント側とサーバー側の両方に当てはまります。上記の最後の行に示されているように、サーバー側で存在を確認しようとしました。ただし、この行はログに記録しundefinedます。

Underscore のextend関数は (明らかに) 他のオブジェクトでも機能するので、nowjs が使用する「魔法の名前空間」と関係があると思います。

拡張が機能しないのはeveryone.nowなぜですか?どうすれば機能させることができますか?


編集 2:プロキシをさらに掘り下げました。名前が機能しないため、変数を渡してプロキシにプロパティを設定するようです。このテストケースはより絞り込まれているため、最初の編集を削除しました。

なぜこれが機能しないのですか?これはバグですか?(ほとんどの場合、私はそうではないことを知っていますが、これは本当に私を無知にしています...)

ログ結果:

どうやら、プロキシで呼び出されることproxy[ key ] = "bar";はありません。set何故ですか?

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

javascript - ノード内のオブジェクトを検査/反復する方法は?

オブジェクトを文字列化してクライアントに送信する前に、mongoose クエリから結果 (オブジェクト) を取得していて、いくつかのキーを置換/削除したいと考えています。

オブジェクトをコンソールログに記録すると、すべてがうまくいきます(すべてのキーがリストされ、それ以上のものはありません)。オブジェクトに対して for..in を実行すると、非表示のフィールドがどこからともなくポップアップします (対象のキーはポップアップしません)。それらは理にかなっています-それらはマングースに属しています-しかし、私はそれらを望んでいません。オブジェクトで Object.keys または Object.getOwnPropertyNames を使用すると、同じことが起こります - 隠しフィールドのポップアップは役に立ちません。

そこで、util.inspect(obj,true,null,true) を使用して要素を検査し、結果をコンソールに記録したいと考えました。コンソールでの結果は同じで、検査なしでオブジェクトを直接 console.logged したかのようです。

では、2 つの質問があります。

  1. オブジェクトに関する内部/非表示の情報を実際に取得するために、オブジェクトを正しく検査するにはどうすればよいですか?
  2. オブジェクトを反復処理してフィールドのみを取得するにはどうすればよいですか? (はい、for..in ループ内で hasOwnProperty チェックを行っています)

//編集

はい、分かりました。いくつかの調査の後、mongoose オブジェクトがそのプロパティをプロキシし、toJSON 関数を持っていることがわかりました。これは、console.logs が予期された出力構造にある理由を説明しています。解決策は、Mongoose 独自の toObject メソッドを使用することです。

このようにして、Object.getOwnPropertyNames を反復処理し、クライアントに知られたくないキーを置換/削除できます。

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

javascript - オブジェクトのプロトタイプを変更して instanceof の結果を変更する良い方法は?

この古い質問にコメントしたかったのですが、ロックされているようです。

これが私のユースケースです:

  1. オブジェクトobjはコンストラクターで作成されBaseます。obj instanceof Basetrue を返します。
  2. のプロトタイプをから構築さobjれたかのように変更したい。つまり、欲しい objDerived
    • objのメソッドにアクセスするにはDerived
    • obj instanceof Derived真を返す

その理由はobj、作成時には不明であり、その後何が起こるかによって決定されるタイプを階層内に持つためです。階層を下に移動できるようにしたい。

私はこれを行うことができると信じています

obj.__proto__ = Derived.prototype;

しかし__proto__、次のバージョンの JavaScript では廃止される予定です。上でリンクした質問が尋ねられてから変更されたプロキシAPI は、私の使用例をサポートしていないようです。

現在存在する、または将来的に計画されているユースケースの代替実装はありますか?

私が今見ることができる唯一の代替手段は、使用することです

obj への複数の参照を保存することはありませんが、そのコストは非常に不便です。

これは、問題を示すフィドルです。

0 投票する
5 に答える
12446 参照

node.js - nodejs で Harmony プロキシを有効にする

nodejsでEcmaScript 6 Harmony Proxiesを有効にすることは可能ですか? もしそうなら、長所と短所は何ですか?また、それらの使用方法に関するドキュメントはありますか? ありがとう !

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

node.js - ES6 プロキシは配列インデックスをインターセプトできません

これが私のテストコードです(次を使用して実行しnode --harmony-proxies foo.jsます:

最後の 2 行で 5 が出力されないのはなぜですか? プロキシが整数のように見えるプロパティをインターセプトできないのはなぜですか? それは実装のバグですか、それとも指定方法ですか? 独自の配列 (スパース配列など) を実装できるように、配列インデックスをインターセプトする別の方法はありますか?

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

javascript - Javascript:さまざまなブラウザでHTML5 API / ECMAScript5 / ECMAScript6のcaniuse.comに相当するものはありますか?

さまざまなブラウザで、HTML5 API / ECMAScript5 / ECMAScript6のcaniuse.comに相当するものはありますか?

caniuse.comにはJavaScriptのカバレッジがありますが、http: //caniuse.com/#feat=filesystemのようなページでは、yes / no/partially以外のことは実際にはわかりません。現実的には、caniuseと交差するquirksmodeのようなものを探しています。ここでは、任意のAPIまたはメソッドを詳細に調べて、現在実装されている(そしてバグがない)場所を確認できます。たとえば、現在どのブラウザのどのバージョンがこれで動作するかを確認できるサイト:

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

node.js - プロキシ コンテキストでコードを実行する

Harmony Proxies を試していて、コードを Proxy コンテキストで実行したいと考えています。つまり、コードのグローバル オブジェクトは Proxy になります。たとえば、コードで関数 foo() を呼び出すと、プロキシの get() メソッドによって管理されます。

しかし、Proxy.create() と vm.runInNewContext() を使用しても機能しません。Proxy オブジェクトが新しいコンテキスト オブジェクトによって上書きされ、プロパティが失われているようです。

私がやろうとしていることを達成する方法はありますか?

// 編集

上記のコードはうまく機能しますが、thisステートメントを使用せずに、グローバル コンテキストを直接参照できるようにしたいと考えています。