如何确保浏览器可以支持** {get X(){}} **

时间:2011-04-20 15:14:53

标签: javascript ecmascript-5

我拒绝使用__defineProperty__而是更喜欢替代语法 {get X(){}}

然而,这不适用于IE。

除了浏览器检测,我可以检测到浏览器支持更新语法的最佳方式是什么?

编辑:确实,我实际上并没有尝试特别检测IE,而是将那些“不支持获取X(){} 语法的浏览器”重定向到 notsupported.html 。我相信有一些方法可以做到并正在努力,但万一有人已经有这个问题,并有一个解决方案..

编辑2:顺便说一句,这并不意味着没有人(除了我之外的人)使用获取X(){} 语法,因为它并非所有人都支持(或者不受5支持)主流浏览器)?

3 个答案:

答案 0 :(得分:2)

正如其他人所说,你不能强迫旧的(当前!)浏览器接受更新的语法。你会用浏览器检测做什么?对旧浏览器使用旧语法,否则使用新语法?然后你要写两次相同的代码。

确定您需要支持的一组浏览器,确定它们可以保证哪些功能,然后限制自己使用这些功能。这就是网络开发的工作原理。

答案 1 :(得分:1)

您想要使用通常不实现的ES5功能。

希望使用常见的JavaScript解释器无法识别的语法

没有办法模仿它。

我建议您使用

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

如果您查看benchmark。然后你会发现使用ES5慢了15倍。坚持使用ES3。

由于无法在IE8中模拟getter,因此你无能为力。

答案 2 :(得分:0)

试试这个:

function browserSupportsGetterAndSetterSyntax() {
  try {
    return eval('({ get x() { return 3; }}).x') == 3;
  } catch (e) {
    return false;
  }
}