Как вызвать функцию, принадлежащую другому объекту в JavaScript (используя script.aculo.us) - PullRequest
0 голосов
/ 04 августа 2009

Я создаю новый экземпляр объекта Draggable (из модуля dragdrop script.aculo.us) внутри функции, принадлежащей созданному мной объекту. Давайте назовем этот объект объектом «Персона». Достаточно просто. Однако изнутри функции onEnd внутри объекта Draggable мне нужно вызвать другую функцию getCell (), также принадлежащую вышеупомянутому объекту Person. Вид кровообращения, я знаю, но хотелось бы знать, как это сделать. Ничто из того, что я пробовал, не работает. Это можно сделать? Ниже приведен пример, отредактированный для краткости, но я надеюсь, что он передает мои намерения. Я был бы благодарен за любые идеи здесь. Спасибо.

var Person = Class.create({
  initialize: function(name) {
    this.name = name;
  },        
  move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },
  getCell: function(t) {
    var pos = t.positionedOffset();
    return [(pos.left / 64).floor(), (pos.top /64).floor()];
  }
});    

Ответы [ 2 ]

0 голосов
/ 04 августа 2009

try Function.bind :

var Person = Class.create({
  initialize: function(name) {
    this.name = name;
  },        
  move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = this.getCell(d.element);
      .......
      .......
     }.bind(this)
     .......
     .......
    });
  },
  getCell: function(t) {
    var pos = t.positionedOffset();
    return [(pos.left / 64).floor(), (pos.top /64).floor()];
  }
});
0 голосов
/ 04 августа 2009

попробуй

move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = p.getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },

или

move: function(p) {
    var getCell = function (el) {
        return p.getCell ( el );
    };

    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },
...