哪些网络浏览器使用__proto__
? Mozilla states那个:
请注意,除了Mozilla中的JavaScript版本之外,
__proto__
可能不可用。
答案 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__
。
目前,这些浏览器是:
排除在外的人:
答案 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
。但是它有点危险,因为这个属性可以重新定义。