Действительно запутался в том, как работает JavaScript / BackboneJS.Давайте рассмотрим следующий пример:
window.MyView = Backbone.View.extend({
index: 0,
list: [],
initialize: function () {
console.log("Initializing MyView");
console.log("this.index = " + this.index);
console.log("this.list = [" + this.list.join(',') + "]");
this.index++;
this.list.push(this.index);
}
});
var first = new MyView(),
second = new MyView();
Здесь я ожидал, что новый MyView () создаст чистую копию window.MyView "class", поэтому результат будет:
Initializing MyView
this.index = 0
this.list = []
Initializing MyView
this.index = 0
this.list = []
Но вместо этого у меня есть
Initializing MyView
this.index = 0
this.list = []
Initializing MyView
this.index = 0
this.list = [1] // Very unexpected!
Запутанная часть заключается в том, что целочисленная переменная "index" была фактически 0, как и ожидалось, но массив "list" уже содержал значение из предыдущей инициализации.Как это получается?
Демо http://jsfiddle.net/fqZTp/3/