JS - 在原型函数中覆盖它

时间:2017-01-09 16:59:50

标签: javascript

我想在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);

我可以这样做吗?

3 个答案:

答案 0 :(得分:6)

你无法达到你想要的效果,因为JS中的数字是不可变的。

这不起作用的另一个原因是因为this在JS中已经是动态的,因此每次调用函数时它都会自动更改,具体取决于它的调用方式。

答案 1 :(得分:0)

这是不可能的。 number是JS原语之一,all primitives它在运行时包装到Number

答案 2 :(得分:0)

您可以修改复杂类型(对象,数组,函数),但遗憾的是您无法更改基本类型(字符串,数字,布尔值,空值,未定义)。这个属性被称为“不变性”。

您可能还会发现此答案有用:https://stackoverflow.com/a/16115543/3236521