How to access object prototype in javascript? How to access object prototype in javascript? javascript javascript

How to access object prototype in javascript?


var f = function();var instance = new f();

If you know name of instance class function, you can simply access prototype as:

var prototype = f.prototype;prototype.someMember = someValue;

If you don't:

1)

var prototype = Object.getPrototypeOf(instance);prototype.someMember = someValue;

2) or

var prototype = instance.__proto__;prototype.someMember = someValue;

3) or

var prototype = instance.constructor.prototype; // works only if constructor is properly assigned and not modifiedprototype.someMember = someValue;

For compatibility you can place into your code the following snippet (and use always Object.getPrototypeOf(instance) to return prototype):

if(!Object.getPrototypeOf) {  if(({}).__proto__ === Object.prototype && ([]).__proto__ === Array.prototype) {    Object.getPrototypeOf = function getPrototypeOf(object) {      return object.__proto__;    };  } else {    Object.getPrototypeOf = function getPrototypeOf(object) {      // May break if the constructor has been changed or removed      return object.constructor ? object.constructor.prototype : void 0;    };  }}

UPDATE:

According to ECMA-262 6th Edition (June 2015) __proto__ property is standardized as additional feature for Web browsers. All latest editions of top browsers supports it now. Read more about __proto__:


It looks like

Object.getPrototypeOf(passedObject);

will work for this, and is compatible with modern browsers.

Here are the compatibility tables on MDN


var F = function(){};var object1 = new F();alert(object1.constructor === F);alert(object1.constructor.prototype === F.prototype);