What web browsers use the __proto__
? Mozilla states that:
Note that
__proto__
may not be available in JavaScript versions other than that in Mozilla.
What web browsers use the __proto__
? Mozilla states that:
Note that
__proto__
may not be available in JavaScript versions other than that in Mozilla.
Click here for your answer.
Details
The most general way would be to test this page in different browsers:
<html>
<head>
<script type="text/javascript">
function a() {}
if ( (new a).__proto__ === a.prototype )
alert('supported');
</script>
</head>
</html>
It alerts if a browser supports __proto__
. I've submitted it to browsershots.org, which will create screenshots of the page in many different browsers. Thus, you should see--by means of the alert message--which browser does support it.
The Browser Security Handbook has a table showing which browsers expose __proto__
.
Currently, those browsers are:
Those excluded:
The end of the sentence you posted is See below for workarounds.
, where there is a discussion on an alternative method extends()
that uses 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;
}
This is not direct answer to the question but it may help for those who wanna know the prototype of the object instance (this is for what __proto__
is often used). All modern browsers (including IE9) supports getPrototypeOf()
which can be used to determine the object's prototype. The irony of fate is that some still actual browsers like IE7 and IE8 that don't support Object.getPrototypeOf(obj)
don't support obj.__proto__
as well. For those browsers you can use obj.constructor.prototype
. However it is a bit dangerous because this property can be redefined.