Запрос об Object.defineProperty, как показано ниже:
function testComponent(){
var testProperty;
Object.defineProperty(this, "testProperty",
{
get : function()
{
return testProperty;
},
set : function(val)
{
testProperty = val;
}
});
}
Где он будет использоваться так:
testObject = new testComponent();
testObject.testProperty = "testValue";
Основываясь на том, что я видел до сих пор, похоже, что нет перекрестного браузера, поскольку я пытался использовать es5-shim без везения, но я хотел бы подтвердить. Я также нашел ссылку на этот пост, и мои тесты все еще терпят неудачу в IE 7 и 8, может ли кто-нибудь пролить свет на это?
Я помню, что несколько месяцев назад я узнал о каком-то связанном вопросе где-то на S/O, и я думаю, что видел, что кто-то написал для этого решение в ответ. Любые общие обходные пути для геттеров/сеттеров также будут оценены. Идея состоит в том, что мне нужен какой-то эквивалент устройства-получателя на объекте, не передавая изменение параметра с помощью метода. Мне не нужен IE6, но я бы хотел поддерживать браузеры в диапазоне IE7 + ff 3.6+ и т.д.
Тесты QUnit ниже: (jsFiddles)
(они передаются во всех браузерах на моей машине, кроме IE 7 и 8
прямое использование defineProperty, без прокладок:
http://jsfiddle.net/uSYFE/
скрипка с использованием прокладки ES5, я предполагаю, что все, что мне нужно сделать, это включить его?:
http://jsfiddle.net/hyperthalamus/ntwDy/
скрипт с использованием рекомендуемого IE решения:
http://jsfiddle.net/hyperthalamus/xfvz3/