對不起,我甚至不知道如何爲這個問題或我應該搜索什麼(一個Javascript新手),最好的解釋方法可能是向你展示代碼。我正在嘗試使用GrovePI Node庫(https://github.com/DexterInd/GrovePi/tree/master/Software/NodeJS),但我想將「board」抽象爲帶有原型的類,以便我可以從多個位置引用該板。爲什麼我不能在'this'上引用某些內容,但是我可以在使用var時使用?
下面的代碼一直工作到某一點。 'board'被定義,當board.init()
被調用時,我們會成功打印版本。
var GrovePiBoard = function() {
this.commands = GrovePi.commands;
var board = new GrovePi.board({
debug: true,
onError: function(err){
console.log('GrovePiBoard.js: Something went wrong');
console.log(err)
},
onInit: function(res) {
if(res){
console.log('GrovePiBoard.js: GrovePi Version :: ' + board.version());
} else {
console.log('GrovePiBoard.js: res is false');
}
}
});
// This works
board.init();
};
GrovePiBoard.prototype.init = function() {
console.log('Initialising board');
// I want to do board.init() here.
};
但是,我真的希望能夠訪問init原型函數上的板對象。事情是這樣的..
var GrovePiBoard = function() {
this.commands = GrovePi.commands;
this.board = new GrovePi.board({
debug: true,
onError: function(err){
console.log('GrovePiBoard.js: Something went wrong');
console.log(err)
},
onInit: function(res) {
if(res){
console.log('GrovePiBoard.js: GrovePi Version :: ' + this.board.version());
} else {
console.log('GrovePiBoard.js: res is false');
}
}
});
// This doesn't work here
this.board.init();
};
GrovePiBoard.prototype.init = function() {
console.log('Initialising board');
// This doesn't work either
this.board.init();
};
當運行上面的代碼,我得到ReferenceError: board is not defined
只要this.board.init();
被調用。
爲什麼我不能將電路板放在'this'上,然後從原型中引用它?
這是完全不清楚什麼你正在嘗試做的。對我來說,這看起來像是你過於複雜的事情,然後被一切複雜的事情弄糊塗了。 – Tomalak
@Tomalak我覺得我得到的問題:-)看看我的答案... –