Когда вы говорите «ошибка», я предполагаю, что вы имеете в виду «неправильный результат».
Проблема в том, что -44.4.natural()
эффективно -(44.4.natural())
.Если вы посмотрите на this
в методе natural
, вы увидите, что это 44.4
, а не -44.4
.
JavaScript не имеет литерального формата отрицательного числа.Вместо этого он использует оператор отрицания.Правила приоритета означают, что сначала выполняется вызов метода, а затем отрицание.
Если вы хотите использовать -44.4
в качестве значения, поместите его в переменную:
let a = -44.4;
console.log(a.natural()); // 44.4
Live Example:
Function.prototype.method=function(name, func){
this.prototype[name] = func;
return this
}
Number.method('natural',function(){
return Math.abs(this)
});
let a = -44.4;
console.log(a.natural());
или используйте ()
:
console.log((-44.4).natural()); // 44.4
Live Пример:
Function.prototype.method=function(name, func){
this.prototype[name] = func;
return this
}
Number.method('natural',function(){
return Math.abs(this)
});
console.log((-44.4).natural()); // 44.4