我想定义一个有两个公共方法的类。其中一个方法恰好可以用于实现另一个方法,但是我无论如何都不能让该函数在另一个函数的范围内被识别。我不知道这是否是特定于node.js的问题,但如果有关系的话,那么这是在node下运行的。
以下是一个简短的玩具问题,它复现了我所看到的行为:
当我运行这个程序时,它会出现以下错误:
我已经尝试了所有我能找到的关于如何给类的原型分配内容的变化,结果都是一样的。如果我尝试调用
在
以下是一个简短的玩具问题,它复现了我所看到的行为:
function Foo() {
this.list = [];
}
Foo.prototype = {
addSeveral: function(arr) { arr.forEach(function(v) { addOne(v)} ) },
addOne: function(item) { list.push(item); }
}
f = new Foo();
f.addSeveral([1,2,3]);
当我运行这个程序时,它会出现以下错误:
[jasonb@localhost]$ node testobj.js
/home/jasonb/work/testobj.js:6
Foo.prototype.addSeveral = function(arr) { arr.forEach(function(v) { addOne(v)}
^
ReferenceError: addOne is not defined
at /home/jasonb/work/entity_mapping/testobj.js:6:70
我已经尝试了所有我能找到的关于如何给类的原型分配内容的变化,结果都是一样的。如果我尝试调用
this.addOne(v)
,它仍然会崩溃,但是会显示TypeError: Object #<Object> has no method 'addOne'
。在
addSeveral()
中如何调用addOne()
?
this.
,它会出现另一个错误:TypeError: Object #<Object> has no method 'addOne'
。 - Jason Black