调用javascript原型方法时未定义的函数

时间:2014-09-06 12:24:09

标签: javascript prototype

我有以下javascript对象:

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();

我得到一个未定义的不是函数'。它似乎不知道我在原型中声明的渲染函数。我在这里失踪了什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

Volune的帮助下,我将构造函数更改为

var Playlist = function(callback) {
    var playlist = this;
    $.ajax({
        url:'/mpdplaylist'
    })
    .done(function(data) {
        playlist.html = data;
        callback(null,playlist);
    })
    .fail(function(err) {
        callback(err,{});
    });
};

现在可以了。谢谢!!

修改 正如Volune指出的那样,我在'done'回调函数

中用空值替换了空对象