Number.isInteger (x) che è creato non può funzionare in IE
Number.prototype.isInteger = Number.prototype.isInteger || function(x) {
return (x^0) === x;
}
console.log(Number.isInteger(1));
getterà errore in del browser IE10
Number.isInteger (x) che è creato non può funzionare in IE
Number.prototype.isInteger = Number.prototype.isInteger || function(x) {
return (x^0) === x;
}
console.log(Number.isInteger(1));
getterà errore in del browser IE10
A quanto pare, IE tratta di oggetti DOM e Javascript oggetti separatamente, e si può estendere gli oggetti DOM usando Object.prototype.
IE non consente di utilizzare un prototipo che non è nativo ..
Dovrete fare una funzione separata (globale, se si vuole) come
function isInteger(num) {
return (num^0) === num;
}
console.log(isInteger(1));
Nonostante i possibili problemi con aggiungendo ai prototipi nativi in MSIE, il tuo corpo di funzione è inappropriato per un metodo aggiunto a Number.prototype
.
Metodi sul prototipo sono chiamati casi del tipo, e l'istanza viene passato come this
(e sarà sempre un oggetto, non un primitivo).
quindi una più corretta applicazione sarebbe:
Number.prototype.isInteger = function() {
return (this^0) === +this;
}
con l'uso:
(1).isInteger();
Se si voleva utilizzare Number.isInteger(n)
, invece, si sarebbe dovuto aggiungere la funzione direttamente all'oggetto Number
, non il suo prototipo. C'è uno shim rigoroso per questo su the MDN page for this function.
Grazie per la risposta. – huangxbd1990
Grazie per la risposta e il link per Number.isInteger in MDN.But '("1"). IsInteger();' genera un errore: Uncaught TypeError: undefined non è una funzione – huangxbd1990
puoi pubblicare l'errore – harishr