Number.isInteger (x), który jest tworzony nie działa w IE
Number.prototype.isInteger = Number.prototype.isInteger || function(x) {
return (x^0) === x;
}
console.log(Number.isInteger(1));
rzuci błąd w przeglądarce IE10
Number.isInteger (x), który jest tworzony nie działa w IE
Number.prototype.isInteger = Number.prototype.isInteger || function(x) {
return (x^0) === x;
}
console.log(Number.isInteger(1));
rzuci błąd w przeglądarce IE10
Najwyraźniej IE traktuje DOM obiektów i obiektów JavaScript oddzielnie, i można • Rozszerz obiekty DOM za pomocą Object.prototype.
IE nie pozwala użyć prototyp, który nie jest rodzimy ..
Musisz zrobić oddzielną funkcję (globalne, jeśli chcesz) jako
function isInteger(num) {
return (num^0) === num;
}
console.log(isInteger(1));
Niezależnie od ewentualnych problemów z dodając do natywnych prototypów w MSIE, twoje ciało funkcyjne jest nieodpowiednie dla metody dodanej do Number.prototype
.
Metody na prototypie wzywa się przypadkach typu, a przykładem jest przekazywany jako this
(i zawsze będzie przedmiotem nie pierwotną).
Dlatego bardziej poprawne wdrożenie byłoby:
Number.prototype.isInteger = function() {
return (this^0) === +this;
}
z wykorzystaniem:
(1).isInteger();
Jeśli chcesz użyć Number.isInteger(n)
zamiast tego, byś musiał dodać swoją funkcję bezpośrednio do obiektu Number
nie jego prototyp. Istnieje rygorystyczne shim dla tego na the MDN page for this function.
Dziękuję za odpowiedź. – huangxbd1990
Dziękuję za odpowiedź i link do Number.isInteger w MDN.But '("1"). IsInteger();' rzuci błąd: Uncaught TypeError: undefined nie jest funkcją – huangxbd1990
Czy możesz opublikować błąd – harishr