我想在Number原型函数中覆盖 this 并动态更改变量的值,例如:
Number.prototype.xd = function(){
this = 11212;
}
var a = 171717;
console.log(a);
a.xd();
console.log(a);
是我想要的,但它会引发错误。 通过这种方式工作Array.prototype.pop方法:
fruits = ["a","b","c","d"];
console.log(fruits);
fruits.pop();
console.log(fruits);
我可以这样做吗?
答案 0 :(得分:6)
你无法达到你想要的效果,因为JS中的数字是不可变的。
这不起作用的另一个原因是因为this
在JS中已经是动态的,因此每次调用函数时它都会自动更改,具体取决于它的调用方式。
答案 1 :(得分:0)
这是不可能的。 number
是JS原语之一,all primitives它在运行时包装到Number
。
答案 2 :(得分:0)
您可以修改复杂类型(对象,数组,函数),但遗憾的是您无法更改基本类型(字符串,数字,布尔值,空值,未定义)。这个属性被称为“不变性”。
您可能还会发现此答案有用:https://stackoverflow.com/a/16115543/3236521