問題タブ [es5-shim]

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 投票する
3 に答える
15313 参照

javascript - ECMAScript 5 (ES 5)-shim を提供するには?

ECMAScript 第 5 版 (2009 年 12 月リリース) では、多数の新しいメソッドが導入されています (詳細については、この表を参照してください)。ただし、これらの新しいメソッドを実装していない古いブラウザーがまだ存在します。

幸いなことに、(JavaScript で記述された) 便利なスクリプトES5-shimが存在します。これは、これらのメソッドが存在しない環境でこれらのメソッドを手動で実装します。

ただし、ES5-shim を提供する方法がわかりません...次のように、すべてのブラウザーに「提供」する必要があります。

または、次のように、本当に必要なブラウザだけを「困らせる」ためにチェックを含める必要があります。

(Function.prototype.bindブラウザがすべての新しい ECMAScript 5 メソッドを実装しているかどうかを確認するために使用しています。上記でリンクした互換性テーブルによると、bindECMAScript 5 メソッドの実装に関しては「最後の砦」です。)

もちろん、この shim を有効にするには、他のすべてのスクリプトのに実行する必要があります。つまり、上記の SCRIPT 要素をページの早い段階 (HEAD 内、他のすべての SCRIPT 要素の前) に含める必要があります。

では、この 2 番目の例は、ECMAScript 5-shim をブラウザーに提供する良い方法でしょうか? それを行うより良い方法はありますか?

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

javascript - es5-shim と underscore.js?

JavaScript プロジェクトにes5-shim.jsunderscore.jsの両方があります。

es5-shim.jsは、Internet Explorer や一部の古いブラウザー用の配列にreduceや などの JavaScript ネイティブ関数を追加するだけです。someunderscore.js は、同じもの (ただし構文は異なります) と、さらに多くのもの (オブジェクトと配列のユーティリティ関数) を追加します。

ただし、es5-shim で追加された関数が存在する場合、underscore.js はそれらを使用します。

そのため、Firefox や Chrome などの「最近の」ブラウザーでは、underscore.js はブラウザーのネイティブ関数を使用します。純粋なJavaScript関数よりも優れていると思います。ただし、Internet Explorer では、underscore.js は es5-shim 関数を使用します。es5-shim.js を削除すると、underscore.js は独自の関数を使用します。

それについて何かアドバイスはありますか?プロジェクトから es5-shim を削除し、 underscore.js のみを使用する必要がありますか? それとも、underscore.js に es5-shim の関数を使用させるべきですか?

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

javascript - Requirejs shim config を使用する理由とタイミング

here APIからrequirejsドキュメントを読みました

しかし、私はシムの一部を取得していません。shim を使用する理由と設定方法を教えてください。

シムを使用する理由と時期を例を挙げて説明してください。ありがとう。

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

javascript - Object.getPrototypeOf が __proto__ に失敗する object.constructor.prototype シムに失敗する

いくつかのシム/ポリフィル ライブラリを調べたところ、Object.getPrototypeOf. 存在しない場合、それらは使用に失敗し、__proto__それが存在しない場合はobject.constructor.prototype.

それ__proto__は「非標準」であり、方法とは少し異なりObject.getPrototypeOfますが、かなり互換性があることを理解しています。

また、原則として、他の 2 つが存在しない多くの状況では、外部アクセス可能で十分であることも理解していますobject.constructor.prototype(プロトタイプが再割り当てされていない場合)。

私が問題を抱えているのは、次の例です。

または

上記のような、いわば「チェーンをたどる」例で、シムがフォールバックするobject.constructor.prototypeと、無限ループという恐ろしい状況に陥ります。

私の質問: および が存在しない環境で上記のコードを実現する方法はありますObject.getPrototypeOf__proto__?

無いような気がしますが、まだ知らない情報があれば調べてみたいと思います。

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

javascript - Object.defineProperty ポリフィル

私は現在、ES5 の新機能に基づいた JavaScript API を作成しています。それはObject.definePropertyかなり広範囲に使用されます。Object.createGetSetPropertyこれをとという 2 つの新しい関数にラップしました。Object.createValueProperty

ただし、これを古いブラウザー (恐ろしい IE8 など) で実行すると問題が発生します。

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

ご覧のとおり、Object.createValueProperty の下に適切なフォールバックがありますが、Object.createGetSetProperty で適切にフォールバックする方法がわかりません。

これに対する解決策、シム、ポリフィルを知っている人はいますか?

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

javascript - Breeze - IE8 のメタデータ ヘルパー

IE8 で Breeze を使用して Breeze.metadata-helper.js を使用すると問題が発生します。es5-shim および sham ライブラリは既に含めています。失敗します: makePropDescription(proto, property) メソッドを実行しようとしているときに: Object.defineProperty(proto, propName, descr) で「getters & setters can't be defined on this javascript engine」というメッセージが表示されます。

追加に失敗するプロパティは、次で定義されている DeclarationID です。

Breeze v1.4.11 と Metadata-Helper v1.0.5 を使用しています。

0 投票する
0 に答える
147 参照

es5-shim - いつシムが必要で、いつシャムが必要ですか?

EC5 Shimライブラリに 2 つのファイルがあるのはなぜですか? それぞれがいつ必要になりますか?

0 投票する
0 に答える
376 参照

javascript - Android2.2以降のWebViewでES5のArrayメソッドは使えますか?

読んでいた:

http://kangax.github.io/es5-compat-table/#Array.prototype.map

しかし、 http: //caniuse.com にあるような webview バージョンの互換性が見つかりません。