私はこの機能を持っています:
Number.prototype.f=function()
{
this=2;//This is not working
}
var x=0;
x.f();
alert(a);//Here I want that x equal 2
そして、最後にxが2になるようにします。
私はこの機能を持っています:
Number.prototype.f=function()
{
this=2;//This is not working
}
var x=0;
x.f();
alert(a);//Here I want that x equal 2
そして、最後にxが2になるようにします。
ある程度できる。数値は参照ではなく、値で渡されます。したがって、せいぜいy = x.f();
この関数で呼び出すことができます:
Number.prototype.f = function() { return 2; };
あなたのコメントについて:
array.push(2); を実行すると、関数 push は配列を変更します!
もちろんそうです。配列はオブジェクトであり、参照によって渡されます。関数は次のようになります。
Array.prototype.push = function(val) {
var t = this;
t[t.length] = val;
};
これを正確に行うことはできませんが、Number コンストラクターを明示的に使用してtoString
メソッドをオーバーライドすることで、同様の効果を得ることができます。
したがって、これは問題であり、製品コードでは決して見られるべきではないという理解に基づいて:
Number.prototype.f = function () {
this.toString = function () {
return "2";
};
}
var x = new Number(0);
x.f();
alert(x);
Chrome でのみテストしました。