JavaScript and __proto__ - what browsers use it?

What web browsers use the __proto__? Mozilla states that:

Note that __proto__ may not be available in JavaScript versions other than that in Mozilla.

Answers:

Answer

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.

Answer

The Browser Security Handbook has a table showing which browsers expose __proto__.

Currently, those browsers are:

  • Firefox 2
  • Firefox 3
  • Safari
  • Chrome
  • Android

Those excluded:

  • IE 6, 7, 8
  • Opera
Answer

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;  
}
Answer

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.

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.