2009-07-02 10 views
20

Por alguna razón, Javascript getters/setters para objetos personalizados parece funcionar con cualquier navegador excepto IE.Javascript getters/setters en IE?

¿Tiene IE otro mecanismo no estándar para esto? (Como con muchas otras características)

Si no, ¿hay alguna solución para lograr la misma funcionalidad?

+1

IE9 y IE10 apoyar esto ahora: http: //kangax.github.com/es5-compat-table/ –

+0

Son compatibles con literales de objeto, pero no con prototipos de objeto en IE :(. http://robertnyman.com/javascript/javascript-getters-setters.html # regular-getters-and-setters – roguenet

Respuesta

8

IE8 lo tiene en defineProperty, pero solo para objetos DOM. Pero supuestamente, eventualmente también vendrá para objetos de JavaScript.

+4

Eventualmente? S o lo veremos en IE 10? ;) –

+0

Interesante - ¡No sabía que esto había sido agregado! @musicfreak: usted y su optimismo soleado ... – Shog9

+27

Es posible que lo veamos en IE10, pero todavía vamos a codificar para IE6. – Nosredna

5

La publicación de Resig hace referencia a su implementación de env.js, ya que es la primera vez que utiliza la metodología getters y setters que está buscando. La razón por la que este estilo funciona bien para él es porque no se utilizan en un entorno basado en navegador, env.js se enfoca principalmente en entornos de scripts o JS del lado del servidor como Rhino.

Para manejar la compatibilidad del navegador y enfocarse en un aspecto que JavaScript hace muy bien, use cierres para sus métodos getter y setter para proteger las propiedades del objeto.

Por ejemplo:

foo: function(val) { 
    var bar = val; 
    this.setBar: function(newBar) { 
     bar = newBar; 
    }, 
    this.getBar: function() { 
     return bar; 
    } 
} 

que se traducirá en:

var checkFoo = foo("cool!"); 
alert(checkFoo.getBar()); //cool! 
checkFoo.setBar("nice!"); 
alert(checkFoo.getBar()); //nice! 
+3

¿sigue siendo este un buen consejo 3 años después? Ver esta tabla de compatibilidad parece ser compatible, es decir, es mejor: http://kangax.github.com/es5-compat-table/ –

2

Por edad IE navegadores también se puede utilizar VB para emular getter y setter Tome un vistazo a este getters & setters for all IE with cross browser VBClass!

+0

Es posible que desee agregar los detalles del núcleo del enlace que ha proporcionado. Como se encuentra (su respuesta), aunque correcta, si la URL que está enlazando deja de estar disponible, será menos útil. – talegna

Cuestiones relacionadas