我正在使用原型创建一个 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("验证");
};
新测试();