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__
:
EDMA-262 6th Edition (June 2015):
B.2.2.1 Object.prototype.__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);