我想分析一下three.js库的类。我有一个函数,可以找出给定的类是否依赖于另一个类。
function getParent (className) {
var parent = null;
var object = new THREE[className]();
for (var a in THREE) {
if (typeof THREE[a] === "function" && object instanceof THREE[a] && a !== className) {
parent = a;
break
}
}
return(parent)
}我也希望有一个返回2个数组的函数。一个包含属性,另一个包含方法。当迭代"object“时,我可以确定成员是什么类型,但是我如何检查它不是继承的?如果父对象存在,并且我存储了它的引用,则否定parentObject.hasOwnProperty的结果是不起作用的。
for (var member in object) {
if (typeof object[member] === "function") {
if (!parentObject.hasOwnProperty(member)) {
methods.push(member)
}
}
else {
//...
}
}发布于 2014-06-09 22:20:40
hasOwnProperty不会检查原型链,因此如果返回true,您就知道该属性是而不是继承的。您不需要检查父对象成员。
if (object.hasOwnProperty(member))
methods.push(member)
else
...有关更多细节,请访问Object.prototype.hasOwnProperty()
https://stackoverflow.com/questions/24120910
复制相似问题