Вложил этот указатель в JavaScript

Я использую библиотеку draw2d js. У меня есть следующий код, который создает прямоугольник на холсте.

 var rect = new draw2d.shape.basic.Rectangle({x:20,y:30});
 rect.on("click", function(){
     //var that = this;
    alert("test");
// I'm trying to access rect using this keyword but its not working
    var c = new draw2d.Connection();
    this.createPort('hybrid'); // adds a port on the rectangle



});

Я пытаюсь получить доступ к прямоугольнику, используя это ключевое слово, но оно не работает

Спасибо!

1 ответ

Решение

this в этом контексте не относится к rect, но вместо этого относится к анонимной функции, которую вы предоставили on:

function(){
  alert("test");
  var c = new draw2d.Connection();
  this.createPort('hybrid'); // adds a port on the rectangle
} // => This is what `this` refers to.

Вы можете просто ссылаться rect непосредственно:

var rect = new draw2d.shape.basic.Rectangle({x:20,y:30});
rect.on("click", function(){
  alert("test");
  var c = new draw2d.Connection();
  rect.createPort('hybrid'); // adds a port on the rectangle
});

this довольно сложный момент JavaScript. Я бы порекомендовал прочитать руководство Mozilla, чтобы справиться с этим.

Другие вопросы по тегам