все зависит от контекста,
this
в некоторых случаях связано с вашим взглядом,
возьмите этот пример:
var myView = Backbone.View.extend({
events: { "click a" : "myfunction" },
initialize: function(){
_.bindAll(this, 'render', 'myfunction');
},
render: function(){
// rendering data here...
},
myfunction: function(e){
console.log(e.target); // will log the clicked DOM element => <a>
console.log(this); // will log the view => myView
}
});
window.v = new myView({ el : $('#mydiv') });
window.v.render();
Как видите, если вы запустите этот пример, вы увидите разницу между this
и e.target
. однако это все из-за ключевой линии в методе initialize.
_.bindAll(this, 'methodname', [ methodnames ] );
это связывает представление с this
, когда используется один из данных методов.
если вы удалите myfunction
из этого списка, console.log(this);
зарегистрирует сам элемент.
но вы не сможете получить доступ к данным или функциям с вашей точки зрения ....
Вы можете выбрать, если привязать представление к this
.