改变“这个”的值

时间:2012-04-19 13:22:00

标签: javascript

我有这个功能:

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!

3 个答案:

答案 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)

这是不可能的。
(双关语)

数字是不可变的。