wtf js(三) number的类型不是number

 

在javascript中你如何确定一个Number类型的数据是整型?

x = 1;

x === Math.floor(x);

//return true

 

如果要把这个写成Number的一个扩展方法呢?你会说,很简单啊,看下面:

Number.prototype.isInteger = function(){

  return this === Math.floor(this);

}

x = 1;

x.isInteger();

//return false

 

为什么呢?因为你如果你为Number添加一个方法,那在方法内部这个Number类型的数据就会变成object类型,而Math.floor(x)返回的又是Number类型,所以用"==="比较他们的值和类型是会返回false的。

有两种解决方法:

 1.

Number.prototype.isInteger = function(){

  return this == Math.floor(this);

}//仅仅比较他们的值

 

2.

 

Number.prototype.isInteger = function(){

  return Number(this) === Math.floor(this);

}//将this的type变成Number先

 

that's all.

 

 

你可能感兴趣的:(number)