8

Math.prototype私には定義されていないので、ここで何かが欠けているに違いありません。どうしてこれなの?私はこのようなことをしようとしました:

Math.prototype.randomRange = function(from, to){
    return Math.floor(Math.random() * (to - from + 1) + from);
}

しかし、代わりに次のようなことをしなければなりませんでした:

Math.randomRange = function(from, to){
    return Math.floor(Math.random() * (to - from + 1) + from);
}

しかし、それは正しくないと思います。それは私だけですか、それとも私はこれを別の方法で行うべきですか?これがばかげた質問または重複した質問である場合はお詫びしますが、検索しても何も見つかりませんでした(SOで「Math.prototype」を検索すると、正確に2つの質問が表示されます。これはちょっと奇妙です)。

4

3 に答える 3

6

これらのMath関数は、他のオブジェクト指向言語のクラスレベルの関数に似ています。コンストラクターにはプロトタイプオブジェクトはありません。とにかく誰も(私が知っている)コンストラクターを使用しません。(Mathインスタンスで何をしますか?)

編集Math—とにかく機能ではないコメントで指摘されています(そして私が推測することを確認することは私には決して起こりませんでした)。ブラウザコンソールに入力Math()すると、エラーが発生します。

于 2012-05-30T16:42:19.800 に答える
2

MathJavaScriptでは、他の言語の静的クラスに相当します。プロトタイプやコンストラクターはありません(たとえば、すべての静的メソッドとプライベートコンストラクターのみを使用してJavaでクラスを作成するのと同じです)。

詳細については、このStackOverflowの質問を参照してください:JavaScript / ActionScriptでMath.constructorを再定義する実用的な使用法はありますか?

具体的には、受け入れられた答え:https ://stackoverflow.com/a/10431309/1403635

于 2012-05-30T16:44:36.540 に答える
1

Mathは静的オブジェクトであり、コンストラクターではないためです。電話をかけるとエラーが発生しますnew Math()

于 2012-05-30T16:43:31.533 に答える