問題タブ [ecmascript-5]
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 - javascriptを書き出す高級言語はありますか?
javascriptを書き出す高級言語を探しています。言い換えると、この言語とjavascriptの関係は、C++とアセンブリコードの関係に似ています。
この高級言語の要件は、型の安全性、簡単なリファクタリング、クラス、継承など(java / C#/ vb.netのようなもの)を持つことができることです。
利点は、JavaScriptに継承をもたらすために「ハック」に依存することなく、この高級言語でコーディングできることです。さらに、高級言語は型安全性の制限を課し、生成されたjavascriptは単に「仕事をする」ので、実行時の型/アヒルのチェックを行う必要はありません。
追加の利点は、アセンブリでのコーディングと比較して、C++でコーディングするときに得られる可能性のある利点のいずれかです。
私は実際にこの高級言語を自分で書こうとしていますが、それは大変な作業であり、誰かが実際にそのようなことをすでに行っているのではないかと思いました。
javascript - 継承をシミュレートするために`Boy.prototype= new Human;`を使用するのはなぜですか?
Boy.prototype = new Human;
誰もが継承をシミュレートするために使用している理由がわかりません。ほら、私たちが欲しいのはAの関数ですよね?新しいAをインスタンス化せずにそれを行うことができます(実際、新しいAをインスタンス化すると、実際にインスタンス化関数を実行しているという意味で、望ましくない結果が得られます)。
それで、これはより良い解決策ではありませんか?
私たちがその特定であり、Human.prototypeの列挙可能なプロパティだけでなくObject.getOwnPropertyNames
、プロトタイプチェーンでそれを使用して呼び出すことでそれを実現できることを望んでいるとしましょう。これは、を通じて利用できますObject.getPrototypeOf
。
Boy.prototype = new Human;
では、より良いオプションを利用できる場合に、継承をシミュレートすることの利点は正確には何でしょうか。
javascript - とにかく、インスタンスに同じ機能を共有させながら、同時にプライベート変数を持たせることはできますか?
私はこのコードを持っています:
現在、._nameは「プライベート」ではありません。._nameを「プライベート」にしたいのですが、同時に、Humanのインスタンスごとに追加の関数を作成したくありません(つまり、tom.Shoutはjohn.Shoutに対して===である必要があります)。各インスタンスは問題ありません..不要です(オフトピックです-これについては別のスレッドで議論できます)
私の結論は、私が達成しようとしていること(._nameを「プライベート」にすると同時にtom.Shout===john.Shout
)は不可能であるということです。
しかし、結論に飛び込む前に、200%確実になりたいと思っています。
(要件が満たされている限り、つまりインスタンスごとに追加の関数を作成しない限り、ハッキングを歓迎します)
スコープを実行するために追加の関数を作成する必要がある場合、それは問題ありませんが、その数は固定数である必要があり、Humanのインスタンスが追加されるたびにその数が増えることはありません。
javascript - JavaScript: 変数の未定義値のテスト; オブジェクトが配列かどうかのテスト
と の間に違いは
typeof value === "undefined"
ありvalue === undefined
ますか?Array.isArray()
ECMAScript 5 でJavaScript が必要になったのはなぜですか?value instanceof Array
特定の変数が配列であるかどうかを判断するために呼び出すことはできませんか?
javascript - ブラウザでの Javascript の取得および設定の可用性
オブジェクト プロトタイプの get メソッドと set メソッドをサポートしていないブラウザはどれですか? これは ES5 の機能だと思います。Chrome で動作することはわかっていますが、ajax アプリで安全に使用できるかどうか疑問に思っています。次に例を示します。
javascript - 特定の関数に対して ECMAscript の厳密モードを無効にすることはできますか?
MDC または ECMAscript 仕様に関する私の質問については何も見つかりません。おそらく誰かがこれを解決するためのより「ハックな」方法を知っています。
私は"use strict"
自分の環境内のすべての JavaScript ファイルを呼び出しています。私のファイルはすべてこのように始まります
これで、エラーを処理するカスタム関数ができました。その関数は、.caller
プロパティを使用してコンテキスト スタック トレースを提供します。次のようになります。
しかしもちろん、strict モード.caller
では、取得時にスローされる削除不可能な prop があります。だから私の質問は、より厳密に「機能的に」無効にする方法を知っている人はいますか?
"use strict";
呼び出された後、すべての関数に継承されます。これで、特定の関数の先頭で呼び出すだけ"use strict";
で、厳密モードを使用できるようになりましたが、その逆を実現する方法はありますか?
javascript - JavaScript:厳密モードと無名関数
ほぼすべてのJSファイルが無名関数でラップされています。匿名関数の外部に含める場合"use strict";
でも、厳密モードは匿名関数に適用されますか?
たとえば、次のスクリプトの無名関数の内部に厳密モードが適用されています。
javascript - シンプルな検索アルゴリズムをよりエレガントにする
これにより、配列がループされ、最初に見つかった関数が合成関数に変換されます。
found = false
私はその変数/カウンターが嫌いです。どうすればそれを取り除くことができますか?
アルゴリズムとして。
アップデート
forループの使用
_.map
、、、、_
_ _.isFunction
__.compose
javascript - EcmaScript5 の機能
私は ES3 についてかなりの知識を持っていますが、ES5 の機能については最新の情報ではありません。私は、多かれ少なかれ、次のことを知っています。
Object.create()
、Object.freeze()
"use strict"
- ゲッターとセッター
- Array.prototypeのメソッド
map()
、、、filter()
_every()
some()
JSON.parse()
しかし、私は他のグッズが欠けていると確信しています。さらに、私は上記についての詳細をすべて知っているわけではありません。たとえば、 のすべての効果についてはわかりません"use strict"
。
ES5 のすべての内外を学ぶための良いリソースはありますか?
javascript - v8 が ECMAScript 5 を実装するのはいつですか?
v8は ECMAScript 第 5 版の問題についてかなり無口であることに気付きました。
V8 は、ECMA-262 第 3 版で指定されている ECMAScript を実装し、Windows XP および Vista、Mac OS X 10.5 (Leopard)、および IA-32 または ARM プロセッサを使用する Linux システムで動作します。
バグトラッカーでさえ静かに見えます...
あるバグで、コミッターがこれを書いているのを見つけることができます:
V8 は、JavaScript ではなく、ECMAScript の実装です。後者は、Mozilla によって作成された ECMAScript の標準化されていない拡張です。V8 は、WebKit/Safari の ECMAScript 実装である JSC とプラグイン互換であることを意図しています。そのため、JSC にもある ECMAScript の非標準拡張機能を多数実装しており、これらのほとんどは Mozilla の JavaScript 言語にもあります。JSC にない非標準機能を V8 に追加する予定はありません。
興味深いことに、彼は 2010 年 10 月 8 日に ECMAScript 5 が公開された 2009 年 12 月にそれを書き、その 2 か月前に ECMAScript 5 のスーパーセットである Javascript 1.8.5 がリリースされました。
では、Google が ECMAScript 第 5 版で実行できるように v8 をいつ更新するのかという疑問が残ります。ECMAScript の最新の標準化にアップグレードする計画さえありますか?