簡體   English   中英

創建的Number.isInteger(x)無法在IE中工作

[英]Number.isInteger(x) which is created can not work in IE

 Number.prototype.isInteger = Number.prototype.isInteger || function(x) { return (x ^ 0) === x; } console.log(Number.isInteger(1)); 

將在IE10瀏覽器中拋出錯誤

顯然,IE分別處理DOM對象和Javascript對象,並且您無法使用Object.prototype擴展DOM對象。

IE不允許你使用非原生的原型..

你必須創建一個單獨的函數(全局,如果你想)

function isInteger(num) {
  return (num ^ 0) === num;
}

console.log(isInteger(1));

盡管在MSIE中添加到原生原型可能存在問題,但您的函數體不適合添加到Number.prototype的方法。

原型上的方法在類型的實例上調用, 實例作為this傳遞(並且將始終是對象,而不是基元)。

因此,更正確的實現將是:

Number.prototype.isInteger = function() {
  return (this ^ 0) === +this;
}

用法:

(1).isInteger();

如果你想使用Number.isInteger(n) ,你必須直接將你的函數添加到Number對象,而不是它的原型。 這個功能的MDN頁面上有一個嚴格的墊片。

創建Number.isInteger

Number.isInteger = Number.isInteger || function(value) {
    return typeof value === "number" &&
           isFinite(value) &&
           Math.floor(value) === value;
};

這應該解決與IE相關的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM