Javascript 更改“this”的值
我有这个功能:Javascript 更改“this”的值,javascript,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 这是不可能的。 双关语 数字是不变的。在某种程度上可以做到这一点。数字是通过值传递的,而不是引用。所以你最多可以称为y=x.f;使用此功能: Number.prototype.f = function() { retur
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.push2时;函数push改变数组
当然有。数组是对象,通过引用传递。该函数可能如下所示:
Array.prototype.push = function(val) {
var t = this;
t[t.length] = val;
};
您不能精确地做到这一点,但是通过显式地使用Number构造函数并重写toString方法,可以获得类似的效果 因此,有一项谅解是:
我只在Chrome上测试过它。你确定吗?当我们做array.push2时;函数push改变数组@user1342369:是的,因为数组是要更改的数据结构。一个数字总是同一个数字,它的标识不会改变或依赖于任何东西。@user1342369:这是因为数组不是不可变的。你不会。整个概念是疯狂的。你可能有一个,但你需要问一个问题,解释你的用例。如果我想做这样的函数:X.Poy,结果在席里思考,因为它更美丽的第一个。way@user1342369-关于什么构成美丽代码的观点并不胜过编写习惯代码。@user1342369:这是最邪恶的行为之一我很久以前就看到过这样的想法。不要这样做!最好解释一下你为什么需要这样做。可能有更好的方法。如果x是基本类型数字,字符串是主要类型,则不需要通过引用复制数组->newarr=arr.slice0
Number.prototype.f = function () {
this.toString = function () {
return "2";
};
}
var x = new Number(0);
x.f();
alert(x);