2

これは不自然な例です:

2 つの数値を除算したいので、そのためのメソッドを作成する必要があります。私は次のように書くことができます:

function divide(dividend,divisor) {
    return dividend/divisor;
};

//Assign the result of the divide function to an element on the page.
$(".firstanswer").html(divide(6,2));

次のように書くこともできます。

Number.prototype.dividedBy = function (divisor)​ {
    var dividend = this;
    return dividend/divisor;
};

var six = 6;
var two = 2;
$(".secondanswer").html(six.dividedBy(two));

どちらの方法でも同じ答えが得られるので、知りたいのは次のとおり
です。どちらの方法を使用する場合の利点と欠点は何ですか。パフォーマンス (ロード/実行時間) に大きな違いはありますか? メモリへの影響に関して、一方は他方よりも再利用可能ですか? 分かりやすさはどうですか?最終的に、このような単純化された例では、それは重要ですか?

コードの方が優れているため、Fiddleも作成しました。

4

1 に答える 1

7

最初の方法に欠点はありません(異なる構文を除く)

2番目の方法では、実装を危険にさらします。それがオブジェクトまたは同じ関数名を持つ他のサードパーティライブラリの一部になったNumber場合Math:)

通常はそれを避けるために、これが行われます:

Number.prototype.dividedBy = Number.prototype.dividedBy || function (divisor)​ {
    var dividend = this;
    return dividend/divisor;
};

このように、その機能がすでに存在する場合は、それを使用して、それ以外の場合は独自の機能を作成します。


詳細については、こちらをご覧ください (いつものように@Kangaxによるもう 1 つの素晴らしい記事) 。

于 2012-06-25T19:11:42.697 に答える