我使用的模块模式如下:
BLAH = ( function() {
var someMethod = function(data) {
};
return {
someMethod: function(data) {
this.someMethod(data);
}
}
})();
在public someMothod中,使用this
引用内部函数是不错的做法?
重要还是只是让事情更清楚?
答案 0 :(得分:2)
您的示例无法正常工作。调用BLAH.someMethod()
时
someMethod: function(data) {
this.someMethod(data);
}
它将继续递归调用public someMethod
,直到堆栈溢出为止。
要访问私有函数,不应在其前面添加this.
。私有函数不是当前对象的属性。它仅在someMethod
的执行上下文中可用。
答案 1 :(得分:2)
为了更加清晰,可以编写上面的代码:
var Blah = (function(){
Blah = function() {
};
Blah.prototype.someMethod = function( data ){
...
}
return Blah;
)();
干杯!
答案 2 :(得分:0)
让代码更具可读性(不应低估)是一种惯例。从功能的角度来看,没有什么区别。
答案 3 :(得分:0)
就我个人而言,我不确定你从私人内部方法中获得了什么。
这是我用于项目的模板,它基于jQuery如何实现它们。
(function ($, undefined) {
var MyObject = (function () {
var myObj = {},
_myInternalVariable = 'YAY';
//Internal method
function _internalMethod(){
};
//external variables
myObj.debug = false;
//version number
myObj.version = "1.0";
// Logs the message to the console, if it (the console) exists
myObj.log = function (msg) {
if (window.console && typeof console.log !== "undefined" && myObj.debug) {
console.log(msg);
}
};
return myObj;
})();
window.MyObject = window.MO = MyObject ;
})(jQuery);