首页 > 解决方案 > 如何在 TypeScript 中通过添加类似 ++ 的函数来扩展 Number

问题描述

我想扩展Number一个plusPlus2将数字增加 2 的函数。

问题是我不知道如何将结果分配回扩展函数中的数字。就像是:

Number.prototype.plusPlus2 = function() {
    this = this + 2;
}

用法是:

x = 1;
x.plusPlus2(); // expect x to be 3

标签: javascripttypescript

解决方案


基元(数字、字符串、布尔值)在 javascript 中是不可变的。

因此,无论何时更改原语,都需要将其分配给另一个变量(甚至将其重新分配给它自己)。

话虽这么说,你不能做你建议的事情,你需要返回一个新值,包含你想要的值,比如说:

Number.prototype.plusplus2 = function() { 
    return this + 2;
}

然后重新分配它:

let x = 5;
x = x.plusplus2();

然后,您可能想知道:如何x++工作?

答案是,x++是 的语法糖x = x + 1,这意味着,实际上,您并没有更改x,而是将 1 添加x到自身并将其重新分配给自身。


推荐阅读