我有这个功能:
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!
答案 0 :(得分:3)
在某种程度上可以做到。数字按值传递,而不是参考。所以最好用这个函数调用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;
};
答案 1 :(得分:2)
你不能精确地做到这一点,但你可以通过显式使用Number构造函数并覆盖toString
方法来获得类似的效果。
所以,基于this is sick and should never be seen in production code:
的理解Number.prototype.f = function () {
this.toString = function () {
return "2";
};
}
var x = new Number(0);
x.f();
alert(x);
我只在Chrome中测试过它。
答案 2 :(得分:1)
这是不可能的。
(双关语)
数字是不可变的。