как обеспечить поддержку браузером ** {get X () {}} ** - PullRequest
0 голосов
/ 20 апреля 2011

я отказываюсь использовать __defineProperty__ и вместо этого предпочитаю альтернативный синтаксис {get X () {}}

Однако это не будет работать в IE.

Помимо определения браузера, как лучше всего определить, что браузер поддерживает более новый синтаксис?

Редактировать: хорошо, на самом деле я не пытаюсь обнаружить IE, в частности, но перенаправить те "браузеры, которые не поддерживают get X () {} синтаксис" на notsupported.html . Я считаю, что есть какой-то способ сделать это, и я работаю над этим, но на тот случай, если кто-то уже имел эту проблему раньше и нашел решение ..

Редактировать 2: кстати, это не значит, что никто (кроме меня) не использует синтаксис get X () {} , поскольку он поддерживается не всеми (или не поддерживается 5 основными) браузеров пока нет)?

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

Как уже отмечали другие, вы не можете заставить старые (текущие!) Браузеры принимать новый синтаксис.А что бы вы сделали с обнаружением браузера?Использовать старый синтаксис для старых браузеров и новый синтаксис в противном случае?Затем вы пишете один и тот же код дважды.

Определитесь с набором браузеров, которые вам необходимо поддерживать, определите, какие функции они вам могут гарантировать, а затем ограничьте себя этими функциями.Вот как работает веб-разработка.

1 голос
/ 20 апреля 2011

Вы хотите использовать функцию ES5, которая обычно не применяется.

Вы хотите использовать синтаксис , который обычные интерпретаторы JavaScript не могут распознать.

Нет способа эмулировать его.

Я рекомендую вам использовать

{
    getX: function() { ... }
}

Если вы проверяете тест .Тогда вы увидите, что использование ES5 в 15 раз медленнее.Просто придерживайтесь ES3.

С этим мало что можно поделать, поскольку в IE8 нет способа эмулировать геттеры.

0 голосов
/ 06 сентября 2012

Попробуйте это:

function browserSupportsGetterAndSetterSyntax() {
  try {
    return eval('({ get x() { return 3; }}).x') == 3;
  } catch (e) {
    return false;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...