5

7行目のこのようないくつかのMDNArrayメソッドシムで、次の構文を使用していることに気付きました。

var t = Object(this);

this配列はどこにありますか。それは私のバリデーターをほのめかさないだけでなく、それが何をするのかについても無知です。

誰かが光を当てることができますか?

4

1 に答える 1

3

私が知る限り、そこでの唯一の使用は、文字列リテラルを に渡す場合をカバーすることですArray.prototype.indexOf。それを削除して文字列を渡すと、エラーが発生します。

TypeError: 'in' 演算子を使用して文字列内の '0' を検索することはできません

ただし、文字列リテラルを のインスタンスにキャストすると、文字String列の各文字の数値プロパティを持つオブジェクトが作成されます。これは通常のオブジェクトであるため、in演算子を使用すると、メソッドはインデックスを返します。文字列内の文字の:

Array.prototype.indexOf.call("hello", "e"); // Returns 1

にキャストした例と、キャストしなかっObjectた例を次に示します。


より一般的なケースでは、コンストラクターに何かを渡すと、それをObjectオブジェクトに変換しようとします。したがって、文字列リテラルをString渡して back のインスタンスを取得したり、数値リテラルを渡して のインスタンスを取得したりできますNumber

于 2012-10-31T09:18:36.400 に答える