javascript:在jcanvas的draw方法中从事件侦听器访问父对象

时间:2013-06-08 14:28:30

标签: javascript jquery jcanvas

我正在使用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变量时,我会得到画布......而不是电路板本身。那里有什么事可做吗?

1 个答案:

答案 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)
              }
          });
}