Доступ к родительской собственности - PullRequest
2 голосов
/ 10 ноября 2011

Привет! Мне нужно изменить свойство mousemove onMouseMove, но я не могу получить доступ к объекту myfunc , поскольку это ссылается на el не родитель !!

function myfunc (el) {
  this.el  = el;
  this.mousemove = false;

  el.onmousemove = function(){
      this.mousemove = true;
  };
}

Ответы [ 4 ]

5 голосов
/ 10 ноября 2011

Просто сохраните ссылку на this, называйте ее как хотите.Обычно используется that или self:

function myfunc(el) {
  var that;
  that = this;
  this.el = el;
  this.mousemove = false;
  el.mousemove = function () {
    that.mousemove = true;
  };
}
1 голос
/ 10 ноября 2011

Звучит так, как будто вы хотите изменить значение mousemove из обработчика onmousemove.Если это так, то вам нужно зафиксировать исходный контекст в значении, к которому вы сможете получить доступ позже.Например

function myfunc (el) {
  this.el  = el;
  this.mousemove = false;
  var self = this;

  el.onmousemove = function(){
      self.mousemove = true;
  };
}
1 голос
/ 10 ноября 2011

Удалите this, потому что все они относятся к window

function myfunc (el) {
  var mousemove = false; //scoped

  el.onmousemove = function(){
      mousemove = true; //same scoped variable
  };
}
1 голос
/ 10 ноября 2011

Один из подходов - создать ссылку на соответствующий this;например,

function myfunc (el) {
  this.el  = el;
  this.mousemove = false;

  var t=this;
  el.onmousemove = function(){
      t.mousemove = true;
  };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...