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/

Respuestas a la pregunta(3)

Su respuesta a la pregunta