I have an instance from Square which inherits from Rectangle
instance instanceof Rectangle --> true
instance instanceof Square --> true
instance.are
No. There isn't. You have to traverse the prototype chain:
function owner(obj, prop) {
var hasOwnProperty = Object.prototype.hasOwnProperty;
while (obj && !hasOwnProperty.call(obj, prop))
obj = Object.getPrototypeOf(obj);
return obj;
}
Now you simply do:
var obj = owner(instance, "area");
console.log(obj === Rectangle); // true
If instance
or its prototypes do not have the property area
then owner
returns null
.