Javascript 我有一个mapping方法,它接受回调作为参数,但我一直得到这个错误
我完全搞不懂为什么“cb”在我的例子中不是一个函数 基本上我有一个“树”构造函数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
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;i console.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))