Обычно ключевое слово with используется для разрешения длинных пространств имен, а не ссылки на один объект. Я думаю, мне нужно знать, каково намерение использовать ключевое слово здесь. Я не верю, что синтаксический синтаксический анализатор позволит вам избежать использования o.bad:property
, что в основном и используется для кодирования.
Если бы объект o
в примере был просто ярлыком для более длинного пространства имен, я бы порекомендовал остановить один объект в разрешении с помощью with, а затем поместить ваше свойство в строку, подобную этой ...
var nmSpace = new Object();
nmSpace.o = { "bad:property": 1, "goodProperty": 2 };
with (nmSpace) {
alert(o['goodProperty']); // works awesome
alert(o['bad:property']); // now accesses "bad:property"!
}
Надеюсь, это поможет.