Number オブジェクトを 2 つのサブ関数を持つ関数で拡張しようとしています。サブ関数がこれを介して Number オブジェクトの値にアクセスできないことを除いて、正常に動作します。アクセス方法や、これが可能かどうかはわかりません。
私のコードは次のようになります
var currency = function(prefix) {
var val = this.toString();
prefix = prefix || 'R$';
if(val > 99999) {
val = val.replace(/(\d+)(\d{3})(\d{2})$/,prefix + " $1.$2,$3");
} else if(val == 0) {
val = prefix + ' 0,00';
} else {
val = val.replace(/(\d+)(\d{2})$/, prefix + " $1,$2");
}
return val;
};
currency.cents = function() {
var val = this.toString();
return val == 0 ? '00' : val.substring(val.length - 2);
};
currency.integer = function() {
var val = this.toString();
return val == 0 ? '0' : val.substring(0, val.length - 2);
};
Number.prototype.currency = currency;
alert((12345).currency()); // "R$ 123,45"
alert((12345).currency.cents()); // return " }"
問題は「var val = this.toString();」の行にあります。これは Number オブジェクトの値ではなく、関数自体を参照するためです。
これを達成する方法はありますか?
2 番目の質問: これを機能させるには、12345 の数字を ( ) で囲む必要があるのはなぜですか? 私は数値オブジェクトを拡張していません.12345はそのインスタンスではありませんか?
前もって感謝します