我有这个功能:
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 中测试过。
这是不可能的。
(双关语)
数字是不可变的。