我正在使用jcanvas(http://calebevans.me/projects/jcanvas/)来学习我的javascript项目。我有以下代码:
var Board = function($element){
this.place_piece = function(piece){
this.board[piece.position[0]][piece.position[1]] = piece;
$element.drawImage({
source: piece.image,
draggable: true,
layer: true,
x: this.get_coordinates_by_cell(piece.position)[0],
y: this.get_coordinates_by_cell(piece.position)[1],
dragstop: function(layer){
console.log($this)
console.log(layer)
}
});
}
我需要访问dragstop函数中的父Board对象的方法。但是当我在那里调用$ this变量时,我会得到画布......而不是电路板本身。那里有什么事可做吗?
答案 0 :(得分:1)
在进入Board构造函数时,将其分配给局部变量(self),以便在同一范围内定义的其他函数可以访问它。
以下内容将起作用:
var Board = function($element){
var self = this;
this.place_piece = function(piece){
this.board[piece.position[0]][piece.position[1]] = piece;
$element.drawImage({
source: piece.image,
draggable: true,
layer: true,
x: this.get_coordinates_by_cell(piece.position)[0],
y: this.get_coordinates_by_cell(piece.position)[1],
dragstop: function(layer){
console.log(self)
console.log($this)
console.log(layer)
}
});
}