Object.defineProperty para todos los navegadores?
Preguntando sobre Object.defineProperty como se muestra a continuación:
<code>function testComponent(){ var testProperty; Object.defineProperty(this, "testProperty", { get : function() { return testProperty; }, set : function(val) { testProperty = val; } }); } </code>
Donde se usaría como tal:
<code>testObject = new testComponent(); testObject.testProperty = "testValue"; </code>
Según lo que he visto hasta ahora, parece que no hay una solución de navegador cruzado, como lo he intentado usares5-shim Sin suerte, pero me gustaría confirmarlo. También encontré una referencia aesta publicación y mis pruebas aún fallan en IE 7 y 8, ¿alguien puede arrojar alguna luz sobre esto?
Recuerdo haber mirado una pregunta relacionada hace unos meses en algún lugar de S / O y creo que vi que alguien había escrito una solución para esto en una respuesta. Cualquier solución general para los getter / setters también sería apreciada. La idea es que necesito algún equivalente de un setter getter en un objeto sin pasar el cambio de parámetro a través de un método. No necesito IE6, pero me gustaría admitir navegadores en el rango de IE7 + ff 3.6+, etc.
QUnit pruebas a continuación:jsFiddles)(Estos pasan en todos los navegadores en mi máquina, excepto IE 7 y 8
Uso directo de defineProperty, sin shims.:
http://jsfiddle.net/uSYFE/
violín usando el calzo ES5, ¿asumo que todo lo que necesito hacer es incluirlo? :
http://jsfiddle.net/hyperthalamus/ntwDy/
jugar con la solución recomendada por IE :
http://jsfiddle.net/hyperthalamus/xfvz3/