我正在使用原型创建一个 Javascript“类”。我不明白为什么第一个/第二个块不起作用,而第三个块会起作用。对于第一个/第二个块,我得到:“对象#没有方法'验证'”。为什么要这样做,并且块 3 是正确的方法吗?
--编辑 我已经在 Chrome/FF 中测试过这个
--Edit2 如果我调用测试原型: var test = new Test();
并在登录原型中调用测试变量它将起作用....
区块 1
功能测试(){ this.init(); } Test.prototype.init = function(){ $(".login").click(this.login); }; Test.prototype.login = 函数(事件){ event.preventDefault(); this.validate(); console.log("登录"); }; Test.prototype.validate = function(){ console.log("验证"); }; 新测试();
第 2 座
功能测试(){ this.init(); } Test.prototype.init = function(){ $(".login").click(this.login); }; Test.prototype.login = 函数(事件){ 变种自我=这个; event.preventDefault(); self.validate(); console.log("登录"); }; Test.prototype.validate = function(){ console.log("验证"); }; 新测试();
区块 3
功能测试(){ if(!(this instanceof LoginController)){ 返回新的登录控制器(); } 自我=这个; this.init(); } Test.prototype.init = function(){ $(".login").click(this.login); }; Test.prototype.login = 函数(事件){ event.preventDefault(); self.validate(); console.log("登录"); }; Test.prototype.validate = function(){ console.log("验证"); }; 新测试();