我想用兩個公共方法來定義一個類。恰巧其中一種方法對實現另一種方法很有用,但對於我的生活而言,我無法讓這種功能在另一種方法的範圍內得到認可。我不知道這是否是特定於node.js的東西,但如果它很重要,這是在節點下運行。Node.js:不能從另一個調用一個Javascript原型方法?
下面是一個簡短的玩具問題,其再現了我所看到的行爲:
[[email protected]]$ 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
我想盡我的變化:
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]);
當我運行它,它炸燬可以找到如何將東西分配給類的原型,並得到相同的結果。如果我嘗試調用this.addOne(v)
相反,它仍然炸燬,但TypeError: Object #<Object> has no method 'addOne'
我怎麼能叫內addSeveral()
addOne()
?
號正如我所說,如果我公關將'this.'加入到方法名稱中,它會以不同的錯誤消失:'TypeError:Object#
啊,就是這樣!謝謝! –
考慮通過單擊複選標記來接受答案以將問題標記爲已回答。 – mtsr