gpt4 book ai didi

类中的 Javascript 递归

转载 作者:可可西里 更新时间:2023-11-01 02:36:06 27 4
gpt4 key购买 nike

我正在尝试让递归方法在类上下文中工作。在我的类里面,我有以下方法:

    countChildren(n, levelWidth, level) {
if (n.children && n.children.length > 0) {
if (levelWidth.length <= level + 1) {
levelWidth.push(0);
}
levelWidth[level + 1] += n.children.length;
n.children.forEach(function (n) {
this.countChildren(n, levelWidth, level+1);
});
}
// Return largest openend width
return levelWidth;
}

但是,当我使用此方法时(以前我只是将它用作 function countChildren = ... 时有效)它无法...找到 (?) 本身:无法在递归时读取未定义的属性“countChildren”

有人有什么想法吗?

最佳答案

问题的出现是因为在你的循环中,this 被重新定义到内部函数范围。

countChildren(n, levelWidth, level) {
var self = this; // Get a reference to your object.

if (n.children && n.children.length > 0) {
if (levelWidth.length <= level + 1) {
levelWidth.push(0);
}
levelWidth[level + 1] += n.children.length;

n.children.forEach(function (n) {
// Use "self" instead of "this" to avoid the change in scope.
self.countChildren(n, levelWidth, level+1);
});
}
// Return largest openend width
return levelWidth;
}

关于类中的 Javascript 递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45147661/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com