以下是我的模块。我想用self命名'Module'。 因此,在模块内部,我将此分配给自己。有了这个,我可以将内部封闭称为“自我”而不是这个,这就是我的想法。但它给出了错误;
如何使用self或任何其他变量名称而不是模块名称?
jQuery(document).ready(function($) {
var Module = (function(sendTo){
var self = this;
return {
init: function() {
console.log('start');
this.login(); //ok
Module.login() //ok
self.login() //TypeError: self.login is not a function
},
login: function() {
console.log('login');
}
}
})(interface);
Module.init();
});
答案 0 :(得分:1)
在您的代码中,self
在创建对象时具有值this
;它不是指你的对象。当您致电Module.init
时,通常的机制是将this
设置为init
属性来自呼叫期间来自的对象。
如果您想通过self
始终引用您的对象,请将您要创建的对象分配给它,然后返回:
jQuery(document).ready(function($) {
var Module = (function(sendTo){
var self = { // ***
init: function() {
console.log('start');
this.login();
Module.login();
self.login();
},
login: function() {
console.log('login');
}
};
return self; // ***
})(interface);
Module.init();
});
但是请注意,代码外部的任何内容都不能更改self
或Module
,因此同一个对象的两个标识符都有点多余。另请注意,self
是一个内置的全局,您正在隐藏(这是引用window
的另一种方式,略有不同),因此self
可能会让其他工作人员感到困惑在代码中。