JavaScript和__proto__ - 什么浏览器使用它?

时间:2010-06-21 07:32:05

标签: javascript prototype

哪些网络浏览器使用__proto__Mozilla states那个:

  

请注意,除了Mozilla中的JavaScript版本之外,__proto__可能不可用。

4 个答案:

答案 0 :(得分:8)

点击here获取答案。

<强>详情

最常用的方法是在不同的浏览器中测试此页面:

<html>
  <head>
    <script type="text/javascript">
      function a() {}
      if ( (new a).__proto__ === a.prototype )
          alert('supported');
    </script>

  </head>
</html>

如果浏览器支持__proto__,则会发出警告。我已将其提交给browsershots.org,这将在许多不同的浏览器中创建该页面的屏幕截图。因此,您应该通过警报消息看到哪个浏览器支持它。

答案 1 :(得分:7)

Browser Security Handbook有一个表格,显示哪些浏览器公开__proto__

目前,这些浏览器是:

  • Firefox 2
  • Firefox 3
  • Safari浏览器
  • 的Android

排除在外的人:

  • IE 6,7,8

答案 2 :(得分:3)

您发布的句子的结尾是See below for workarounds.,其中讨论了使用extends()的替代方法super.prototype

function extend(child, super){  
  for (var property in super.prototype) {  
    if (typeof child.prototype[property] == "undefined")  
      child.prototype[property] = super.prototype[property];  
  }  
  return child;  
}

答案 3 :(得分:0)

这不是问题的直接答案,但它可能有助于那些想知道对象实例的原型(这是经常使用的__proto__)。所有现代浏览器(包括IE9)支持getPrototypeOf(),可用于确定对象的原型。具有讽刺意味的是,一些不支持Object.getPrototypeOf(obj)的IE7和IE8等实际浏览器也不支持obj.__proto__。对于这些浏览器,您可以使用obj.constructor.prototype。但是它有点危险,因为这个属性可以重新定义。