2014-10-21 8 views

risposta

6

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)); 
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.

+0

Grazie per la risposta. – huangxbd1990

+0

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

Problemi correlati