为数字原型创建单位转换方法

时间:2019-06-10 18:59:09

标签: javascript numbers prototype

我目前正在尝试创建公制和英制的单位转换,作为数字原型的一种方法。这是我的代码:

Number.prototype.UnitConversion = function (units){
    switch (units){
        case "Metric":
            this = this/100;
            return this;
        case "English":
            this = this/12;
            return this;
    }
}
var a = 5;
alert(a.UnitConversion("Metric"))

但是我得到一个左侧无效的参数错误。为什么会这样?

2 个答案:

答案 0 :(得分:0)

这是因为意外分配给this。也许尝试一个更具可读性的干净解决方案?像这样:

Number.prototype.UnitConversion = function (units){
    let conversion;
    switch (units){
        case "Metric":
            conversion = this/100;
            break;
        case "English":
            conversion = this/12;
            break;
        //always add a default case
    }

    return conversion;
}

答案 1 :(得分:0)

在JavaScript中是不变的,这意味着您无法重新分配它,请参见:this SO post。但是,您可以简单地返回对其执行的某些计算的值:

Number.prototype.UnitConversion = function(units) {
    switch (units){
        case "Metric":
            return this/100;
            
        case "English":
            return this/12;
            
        default:
            return;
    }
}
var a = 5;
console.log(a.UnitConversion("Metric"))