Вы, должно быть, что-то неправильно поняли. На упомянутой вами странице написано, что геттеры / сеттеры поддерживаются начиная с IE 9 (поэтому должны быть также доступны в IE 11). Проверьте Совместимость браузера раздел.
Однако синтаксис get / set является просто синтаксическим сахаром над старым Object.defineProperty () . Например:
var bValue = 38;
var o = {
get b () { return bValue; },
set b (newValue) { bValue = newValue; }
}
равно:
var o = {}; // Creates a new object
var bValue = 38;
Object.defineProperty(o, 'b', {
get() { return bValue; },
set(newValue) { bValue = newValue; },
enumerable: true,
configurable: true
});
console.log(o.b); // 38
Итак, вы можете использовать это, если вам это действительно нужно.
Как указал Джаред Смит технически возможно обнаружить во время выполнения, поддерживается ли новый синтаксис с использованием eval
(другой вариант - передать код в виде строки в new Function
).
В любом случае, это не лучший способ работы со старыми браузерами, поэтому, если вы хотите написать свой код с использованием синтаксиса ES6, но сможете использовать его в старых браузерах, используйте такие инструменты, как babel, которые будут правильно преобразовывать ваш код, поэтому поддерживаться старыми браузерами.