Javascript 我有一个mapping方法,它接受回调作为参数,但我一直得到这个错误

Javascript 我有一个mapping方法,它接受回调作为参数,但我一直得到这个错误,javascript,function,scope,Javascript,Function,Scope,我完全搞不懂为什么“cb”在我的例子中不是一个函数 基本上我有一个“树”构造函数 this.value = value; this.children = []; }; Tree.prototype.addChild = function (value){ var newInstance = new Tree(value); this.children.push(newInstance); } Tree.prototype.map = function(cb){ var copyTr

我完全搞不懂为什么“cb”在我的例子中不是一个函数

基本上我有一个“树”构造函数

 this.value = value;
 this.children = [];
};

Tree.prototype.addChild = function (value){
 var newInstance = new Tree(value);
 this.children.push(newInstance);
}

Tree.prototype.map = function(cb){
 var copyTree = new Tree(this.value); //1
 copyTree.value = cb(copyTree.value);
 for (var i = 0; i < this.children.length; i++){ // i = 0; 2                 i = 0's value is 2
   copyTree.addChild(new Tree.prototype.map(cb(this.children[i].value)))
 }

 return copyTree;
}
现在每次我调用

var newTree = root1.map(function (value) {
                        return value * 2 })
我一直在犯这个错误

VM1769 Script snippet %231:13 Uncaught TypeError: cb is not a function
    at new Tree.map (VM1769 Script snippet %231:13)
    at Tree.map (VM1769 Script snippet %231:19)
    at <anonymous>:1:21
VM1769脚本片段%231:13未捕获类型错误:cb不是函数
在new Tree.map处(VM1769脚本片段%231:13)
在Tree.map(VM1769脚本片段%231:19)
时间:1:21

我知道我的映射方法可能不正确,但“cb”不是一个函数这一事实让我感到困惑,我在.map调用中传入了一个匿名函数,但是..”cb’不是一个函数吗?这是为什么?

.map
中,您要在
这个.children
中复制一组树。由于数组由树组成,这些树已经有了一个
.map
方法,您可以调用该方法来创建该树的副本。改变

copyTree.addChild(new Tree.prototype.map(cb(this.children[i].value)))

函数树(值){
这个值=值;
这是:children=[];
};
Tree.prototype.addChild=函数(值){
var newInstance=新树(值);
this.children.push(newInstance);
}
Tree.prototype.map=函数(cb){
var copyTree=新树(this.value);
copyTree.value=cb(copyTree.value);
for(var i=0;iconsole.log(newTree)所以我编辑了我的代码,但仍然得到了相同的错误。。。这就是为什么我感到困惑的原因,虽然你发布的这篇文章正是我想要的,但我仍然不明白为什么我的文章不能正常工作。。我一直收到相同的错误“cb不是函数”您的
树。prototype.map(cb(this.children[I].value))
将立即调用
cb
函数,并将其返回值(一个数字)作为下一个
cb
参数传递给
.map
。但是
cb
应该是一个函数,而不是一个数字。(除其他问题外)
copyTree.addChild(new Tree.prototype.map(cb(this.children[i].value)))
copyTree.addChild(this.children[i].map(cb))