Object.isA
an isA operand that can receive string names as well as instances
JavaScript
Object.isA = function isA(instance, clss) {
var type = typeOf(clss);
if (type == 'string') {
var clss_names = clss.split('.'),
clss_name = clss_names.shift();
clss = window[clss_name];
if (!clss) return false;
while (clss_name = clss_names.shift()) {
if (!clss_name in clss) return false;
clss = clss[clss_name];
}
type = typeOf(clss);
}
if (['function', 'class'].contains(type)) {
return (instance instanceof clss);
}
return false;
}
var a = {
b: new Class({})
};
var b = new Class({
Extends: a.b
});
var b = new b;
var c = {
c: {}
};
console.log(Object.isA(b, 'a.b'));
console.log(Object.isA(b, 'c.c'));