2016-11-15 6 views
0

Если я следующий код:«это» изменения значения по щелчку

function Something() { 
    this.randomElement = $("#element"); 
} 

Something.prototype = { 

    functionOne: function() { 
     console.log("hello"); 
    }, 

    functionTwo: function() { 
     this.randomElement.click(function(e) { 
      this.functionOne(); //this becomes pointed at randomElement 
     }); 
    } 
} 

Как я могу написать это в чистом виде, где я бы не использовать Something.prototype.functionOne() заменить this.functionOne() внутри functionTwo? Поскольку событие click изменяет значение этого?

ответ

3

Потому что this привязан к предмету, который нажал. Вы должны использовать bind

this.randomElement.click(this.functionOne.bind(this)); 

или JQuery-х proxy.

this.randomElement.click($.proxy(this.functionOne, this));