У меня есть следующий JavaScript Object:неопределенная функция при вызове яваскрипта метода прототипа
var Playlist = function(callback) {
$.ajax({
url:'/playlist'
})
.done(function(data) {
this.html = data;
callback({},this);
})
.fail(function(err) {
callback(err,{});
});
};
для этого объекта, я объявлен методом прототипа:
Playlist.prototype = {
render : function() {
$('#main').html(this.html);
}
};
теперь, когда я создаю новый объект унд попробуйте вызвать функцию «рендеринга» следующим образом:
function renderPlaylist() {
var playlist = new Playlist(function(err, obj) {
obj.render();
});
}
renderPlaylist();
Я получаю «неопределенное», это не функция ». он, похоже, не знает функцию рендеринга, которую я объявил в прототипе. что мне здесь не хватает? Спасибо за помощь.
'обратного вызова ({}, это),' 'this' не что ты думаешь. См. [JavaScript «это» ключевое слово] (http://stackoverflow.com/questions/3127429/javascript-this-keyword), [документация MDN 'this'] (https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Reference/Operators/this) и [Как работают блокировки JavaScript?] (http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) – Volune
Благодарю вас, вы абсолютно прав. Я изменил свой конструктор. – Hinrich