問題タブ [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.
javascript - ECMAScriptのオブジェクトプロパティ定数?
キーワードで定数を指定できるという点で、ECMAScriptHarmonyの提案を見てきましたconst
。ただし、ブロックスコープ(つまり、FunctionBody
およびProgram
)でのみ使用できるようです。定数をオブジェクトプロパティとして定義する方法はありますか(想像してくださいmyObj.STATUS_OK
)?
properties
提案された方法は経由で使用することだと思いますObject.definePropert(y/ies)
が、それはあまり便利ではないようですが、今はそうですか?
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 にコンパイルするかを切り替える必要があります)。
- 現在、完全な ES:Harmony to ES3 コンパイラの作成を目指している他のプロジェクトはありますか?
- 標準が若い/不安定/流動的であることを知って、そのようなコンパイラを書き始めるのは賢明ですか?
- 現在、ES5 -> ES3 コンパイラはありますか?
Traceur メーリング リストに質問を残しました。
このようなコンパイラの目的は、ES3 との下位互換性です。ES3 での ES5 および ES6 の完全なエミュレーションではありません。
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
javascript - nowjsでみんなのポケットを拡張できないのはなぜですか?
みんなのpocket
nowjsに機能を提供しようとしています。_.extend
私はみんなのポケット、すなわち ingによってそうしたいと思いeveryone.now
ます。私が理解できない何らかの理由_.extend
で、クライアント側で機能を適切に提供できません。
これは私の現在のコードです:
サーバー側とクライアント側の両方で、問題なく実行できますnow.foo()
。一方、は定義されていないnow.bar()
ため失敗します。now.bar
これは、クライアント側とサーバー側の両方に当てはまります。上記の最後の行に示されているように、サーバー側で存在を確認しようとしました。ただし、この行はログに記録しundefined
ます。
Underscore のextend
関数は (明らかに) 他のオブジェクトでも機能するので、nowjs が使用する「魔法の名前空間」と関係があると思います。
拡張が機能しないのはeveryone.now
なぜですか?どうすれば機能させることができますか?
編集 2:プロキシをさらに掘り下げました。名前が機能しないため、変数を渡してプロキシにプロパティを設定するようです。このテストケースはより絞り込まれているため、最初の編集を削除しました。
なぜこれが機能しないのですか?これはバグですか?(ほとんどの場合、私はそうではないことを知っていますが、これは本当に私を無知にしています...)
ログ結果:
どうやら、プロキシで呼び出されることproxy[ key ] = "bar";
はありません。set
何故ですか?
javascript - ノード内のオブジェクトを検査/反復する方法は?
オブジェクトを文字列化してクライアントに送信する前に、mongoose クエリから結果 (オブジェクト) を取得していて、いくつかのキーを置換/削除したいと考えています。
オブジェクトをコンソールログに記録すると、すべてがうまくいきます(すべてのキーがリストされ、それ以上のものはありません)。オブジェクトに対して for..in を実行すると、非表示のフィールドがどこからともなくポップアップします (対象のキーはポップアップしません)。それらは理にかなっています-それらはマングースに属しています-しかし、私はそれらを望んでいません。オブジェクトで Object.keys または Object.getOwnPropertyNames を使用すると、同じことが起こります - 隠しフィールドのポップアップは役に立ちません。
そこで、util.inspect(obj,true,null,true) を使用して要素を検査し、結果をコンソールに記録したいと考えました。コンソールでの結果は同じで、検査なしでオブジェクトを直接 console.logged したかのようです。
では、2 つの質問があります。
- オブジェクトに関する内部/非表示の情報を実際に取得するために、オブジェクトを正しく検査するにはどうすればよいですか?
- オブジェクトを反復処理してフィールドのみを取得するにはどうすればよいですか? (はい、for..in ループ内で hasOwnProperty チェックを行っています)
//編集
はい、分かりました。いくつかの調査の後、mongoose オブジェクトがそのプロパティをプロキシし、toJSON 関数を持っていることがわかりました。これは、console.logs が予期された出力構造にある理由を説明しています。解決策は、Mongoose 独自の toObject メソッドを使用することです。
このようにして、Object.getOwnPropertyNames を反復処理し、クライアントに知られたくないキーを置換/削除できます。
javascript - オブジェクトのプロトタイプを変更して instanceof の結果を変更する良い方法は?
この古い質問にコメントしたかったのですが、ロックされているようです。
これが私のユースケースです:
- オブジェクト
obj
はコンストラクターで作成されBase
ます。obj instanceof Base
true を返します。 - のプロトタイプをから構築さ
obj
れたかのように変更したい。つまり、欲しいobj
Derived
obj
のメソッドにアクセスするにはDerived
obj instanceof Derived
真を返す
その理由はobj
、作成時には不明であり、その後何が起こるかによって決定されるタイプを階層内に持つためです。階層を下に移動できるようにしたい。
私はこれを行うことができると信じています
obj.__proto__ = Derived.prototype;
しかし__proto__
、次のバージョンの JavaScript では廃止される予定です。上でリンクした質問が尋ねられてから変更されたプロキシAPI は、私の使用例をサポートしていないようです。
現在存在する、または将来的に計画されているユースケースの代替実装はありますか?
私が今見ることができる唯一の代替手段は、使用することです
obj への複数の参照を保存することはありませんが、そのコストは非常に不便です。
これは、問題を示すフィドルです。
node.js - nodejs で Harmony プロキシを有効にする
nodejsでEcmaScript 6 Harmony Proxiesを有効にすることは可能ですか? もしそうなら、長所と短所は何ですか?また、それらの使用方法に関するドキュメントはありますか? ありがとう !
node.js - ES6 プロキシは配列インデックスをインターセプトできません
これが私のテストコードです(次を使用して実行しnode --harmony-proxies foo.js
ます:
最後の 2 行で 5 が出力されないのはなぜですか? プロキシが整数のように見えるプロパティをインターセプトできないのはなぜですか? それは実装のバグですか、それとも指定方法ですか? 独自の配列 (スパース配列など) を実装できるように、配列インデックスをインターセプトする別の方法はありますか?
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またはメソッドを詳細に調べて、現在実装されている(そしてバグがない)場所を確認できます。たとえば、現在どのブラウザのどのバージョンがこれで動作するかを確認できるサイト: