我在原型对象中有以下功能:
EmptyChild:function(node)
{
if (Array.isArray(node.children)) {
node.children = node.children.filter(
function(child) {
if (child['id'] =="" || child.length) {
return false;
} else {
this.EmptyChild(child);
return true;
}
}
);
}
}
但是我收到以下错误:
Uncaught TypeError: Object [object global] has no method 'EmptyChild'
我该如何解决这个问题?
答案 0 :(得分:3)
this
是回调中的全局对象。您需要将自己保存在变量中或将其传递给filter
。
请参阅documentation:
如果提供thisObject参数进行过滤,则将其用作 每次调用回调时都会这样。如果没有提供, 或者为null,使用与回调关联的全局对象 代替。
所以你的代码可以是:
if (Array.isArray(node.children)) {
node.children = node.children.filter(
function(child) {
if (child['id'] =="" || child.length) {
return false;
} else {
this.EmptyChild(child);
return true;
}
}
, this); // <===== pass this
}