在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.