Javascript recursion within a class

后端 未结 5 1028
轻奢々
轻奢々 2020-12-31 09:28

I am trying to get a recursion method to work in a class context. Within my class I have the following method:

    countChildren(n, levelWidth, level) {
            


        
5条回答
  •  死守一世寂寞
    2020-12-31 10:13

    The problem arises because within your loop, this gets redefined to the inner function scope.

    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;
    }
    

提交回复
热议问题