CoffeeScript で次のコードを使用しています。
if elem in my_array
do_something()
このJavaScriptにコンパイルされます:
if (__indexOf.call(my_array, elem) < 0) {
my_array.push(elem);
}
スクリプトの先頭で定義されている関数 __indexOf を使用していることがわかります。
私の質問は、このユース ケースに関するものです。配列から要素を削除したいのですが、IE8 をサポートしたいと考えています。これは、オブジェクトをサポートするブラウザーで簡単に行うことができindexOf
ます。ただし、IE8 ではこれは機能しません。splice
indexOf
array
if (attr_index = my_array.indexOf(elem)) > -1
my_array.splice(attr_index, 1)
__indexOf
CoffeScript で定義されている関数を使用しようとしましたが、コンパイラで予約語エラーが発生します。
if (attr_index = __indexOf.call(my_array, elem) > -1
my_array.splice(attr_index, 1)
では、どうすれば CoffeScript を使用できますか、または indexOf を呼び出すためのより目立たない方法はありますか? 同じ関数を 2 回定義するのは奇妙に思えますが、CoffeeScript ではそれらの関数を使用させてくれないという理由だけで...