Я знаю, что в этой статье есть много похожих вопросов по стеку, но для жизни я не могу понять, в чем проблема в моем коде.Проблемы с Javascript при связывании
Попытка повысить уровень в javascript, чтобы любые советы были полезны. Я создал объект для управления функциями слайдера.
var gMapSlider = {
mapSlideShow: false,
// why doesnt current place update when passed in
newMarker: null,
oldMarker: null,
mapSlideIn: function() {
this.contentSlide
$('#placeDetails').animate({right: '0'});
this.mapSlideShow = true;
},
mapSlideOut: function(func) {
if (typeof(func) != "function") func = function() {};
$('#placeDetails').animate({right: '-320px'}, null, null, func());
this.mapSlideShow = false;
},
mapSlideToggle: function() {
(this.mapSlideShow) ? this.mapSlideOut() : this.mapSlideIn();
},
contentSlide: function() {
if (this.newMarker) $('h1', '#placeDetails').text(this.newMarker.title);
},
mapSlide: function(marker) {
this.newMarker = marker;
if (this.oldMarker === this.newMarker) { //same marker showing
this.mapSlideToggle();
}
else if (this.oldMarker !== this.newMarker && !this.mapSlideShow) { //diff marker showing
this.contentSlide(marker);
this.mapSlideIn();
}
else if (this.oldMarker !== this.newMarker && this.mapSlideShow) {
var self = this;
console.log(self) //returns this object
this.mapSlideOut(function() {
console.log(self); // returns this object
self.contentSlide(this.newMarker);
self.mapSlideIn;
}).bind(self); // cannot read property 'bind' of undefined
}
this.oldMarker = this.newMarker;
}
}
Пара вопросов
1) Проблема с моей функцией gMapSlider.mapSlide. Если я вызываю функцию mapSlide и последнее применение if, то я получаю a не могу прочитать свойство ошибки связывания. У меня есть Google'd, но не нашел никакой реальной значимости. Может ли кто-нибудь помочь с тем, что я делаю неправильно здесь.
2) Является ли это лучшим способом управления функциями в пространстве имен. Большинство образцов кода, которые я вижу, используют функции в глобальном пространстве имен, поэтому нужно немного уточнить, если рекомендуется создавать такие объекты в Javascript?
EDIT @torazaburo Спасибо, чувствую себя настоящим новичком, это была проблема. Положите это как ответ, и я стану так же решен. Любые советы по архитектуре кода?
Можете ли вы создать скрипку с вашей проблемой? – AlexD
Вы связываете результат вызова 'mapSlideOut', тогда как я предполагаю, что вы пытаетесь связать переданную ему функцию. Другими словами, вы потеряли правильную скобку. –