-1

我正在从使用 Javascript 显示模块模式切换,我下面的内容似乎有效。我想知道的是我所做的是否正确并且是否遵循最佳实践。例如,我保留“this”状态并在构造函数中调用 init 函数的方式是否正确?

var testApp = function(){
    //Kick it off
    this.init();
};

testApp.prototype = {
    getUsers: function(callback){
        //do stuff
    },
    buildUserTable: function(data){
        //do stuff
    },
    refreshTable: function(){
        //Example
        this.getUsers();
    },
    init: function(){
        //Preserve 'this'
        var instance = this;
        //Callback + init
        this.getUsers(function(data){
            instance.buildUserTable(data);
        }); 
        $('.formSection .content').hide();
        $('.formSection .content:first').slideDown('slow').addClass('selected');
    }
};

window.onload = function () {
    var form = new testApp();
};
4

1 回答 1

2

您正在完全覆盖原型。你不能那样处理继承。

因为{}是一个你隐式继承的对象,Object但没有别的。

继承看起来像这样:

function A() {};
function B() {};
B.prototype = new A();
var b = new B();
console.log(b instanceof A); // "true"

B现在继承自Aand Object

如果你现在这样做:

B.prototype = {
    foo: function () {}
};

var b = new B();
console.log(b instanceof A); // "false"

您不再继承自A;

如何为原型添加功能?使用这个符号:

B.prototype.foo = function () {};
于 2013-05-21T20:30:10.523 回答