javascript - setters - prototype js w3schools
Javascript getters/setters en IE? (4)
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;
}
}
Lo cual dará como resultado:
var checkFoo = foo("cool!");
alert(checkFoo.getBar()); //cool!
checkFoo.setBar("nice!");
alert(checkFoo.getBar()); //nice!
Por alguna razón, los getters / setters de JavaScript para objetos personalizados parecen funcionar con cualquier navegador excepto IE.
¿Tiene el 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?
Para los viejos navegadores IE, también puedes usar VB para emular el getter y el setter ¡Mira estos getters y setters para todos los IE con VBClass de navegador cruzado!
Una solución para IE6 + está disponible que usa el evento onpropertychange y la especificación más nueva defineProperty. La pequeña pega es que necesitarás convertir tu variable en un objeto dom.
Todos los detalles:
http://johndyer.name/native-browser-get-set-properties-in-javascript/
IE8 lo tiene a través de defineProperty
, pero solo para objetos DOM. Pero supuestamente, eventualmente también vendrá para objetos de JavaScript.