كيفية استدعاء دالة الانتماء إلى كائن آخر في جافا سكريبت (باستخدام script.aculo.us)

StackOverflow https://stackoverflow.com/questions/1225484

سؤال

وأنا إنشاء مثيل جديد من وجوه "القابل للسحب" (من وحدة dragdrop script.aculo.us) داخل دالة تابعة لكائن أنا خلقت. دعونا ندعو أن يعترض على الكائن 'شخص'. من السهل بما فيه الكفاية. ومع ذلك، من داخل الدالة 'onEnd "داخل الكائن القابل للسحب، ولست بحاجة إلى استدعاء وظيفة أخرى، getCell ()، الذين ينتمون أيضا إلى كائن المذكور' شخص '. نوع من الدورة الدموية، وأنا أعلم، ولكن أتمنى لو أعرف كيفية القيام بذلك. لا شيء حاولت الأعمال. ويمكن أن يتم ذلك؟ أدناه هو مثال بشدة تحرير الإيجاز ولكن آمل أن ينقل هدفي. سأكون ممتنا لأي رؤى هنا. شكرا.

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()];
  }
});    
هل كانت مفيدة؟

المحلول

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()];
  }
});

نصائح أخرى

والمحاولة

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);
      .......
      .......
     }
     .......
     .......
    });
  },
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top