当前位置: 代码迷 >> JavaScript >> 扩展数字以获得自然数
  详细解决方案

扩展数字以获得自然数

热度:87   发布时间:2023-06-05 09:21:21.0

在阅读Crockford的JavaScript之后,我非常感兴趣:好的部分,这样做:

Function.prototype.method=function(name, func){
  this.prototype[name] = func;
  return this
}

我可以扩展Number,所以这可以工作:

Number.method('integer',function(){
  return Math.round(this)
});

44.4.integer(); // 44

但是当试图获得正整数(自然数)时会抛出错误:

Function.prototype.method=function(name, func){
  this.prototype[name] = func;
  return this
}
Number.method('natural',function(){
  return Math.round(Math.abs(this))
});

   -44.4.natural();// error or doesn't work

有任何想法吗?

你可以像这样使用它:

console.log((-44.4).natural());

你的问题是44.4.natural()首先执行,然后你打印出负面的。

  Function.prototype.method=function(name, func){ this.prototype[name] = func; return this } Number.method('natural',function(){ return Math.round(Math.abs(this)) }); console.log((-44.4).natural()); 

当你说“错误”时,我认为你的意思是“错误的结果”。

问题是-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

实例:

 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

实例:

 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 

  相关解决方案