分享
为什么问答平台  ›  专栏  ›  技术社区  ›  by James

在javascript中使用此函数获取数字的值 - Getting the Value of a Number using this in Javascript

  •  0
  • by James  · 技术社区  · 2 周前

    所以我想在javascript中向现有的number对象添加“roundto”函数。函数将返回四舍五入到x小数的数字。 下面是一个不使用数字原型的工作函数:

    Math.roundTo = (value, decimals) => Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals); 
    

    但是当我尝试这个的时候:

    Number.prototype.roundTo = decimals => this = Math.round(this * Math.pow(10, decimals)) / Math.pow(10, decimals);
    

    出现引用错误:左侧分配无效。

    所以现在,我想知道如何得到数字的值,因为使用“this”关键字,我不能得到数字的值。 但是如何得到这个数字的值呢?

    2 回复  |  直到 2 周前
        1
  •  2
  •   Sebastian Speitel    2 周前

    首先,您必须使用一个普通函数,因为当使用箭头函数时,您会丢失 this .

    其次,你必须返回值而不是更改 ,因为这是一个只读引用。

    Number.prototype.roundTo = function(decimals) {
      return Math.round(this * Math.pow(10, decimals)) / Math.pow(10, decimals);
    }
    
    let x = 5.1234;
    
    console.log(x.roundTo(1));

    如果已经在上实现了方法 Math ,您可以使用:

    Math.roundTo = (value, decimals) => Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);
    
    Number.prototype.roundTo = function(decimals) {
      return Math.roundTo(this, decimals);
    }
    
    let x = 5.1234;
    
    console.log(x.roundTo(1));
        2
  •  0
  •   Tempestas Ludi    2 周前

    这个 this 变量在箭头函数范围内不可用。您需要一个常规的函数声明。

    您得到错误的原因是无法分配给 . 它是一个只读变量,引用( Number )对象本身。您可能希望返回所需的值:

    Number.prototype.roundTo = function(decimals) {return Math.round(this * Math.pow(10, decimals)) / Math.pow(10, decimals);};
    

    惯用

    1.234567.roundTo(2);