如果名称与public方法相同,我应该使用this.myPrivateMethod作为前缀吗?

时间:2011-04-19 03:14:59

标签: javascript jquery

我使用的模块模式如下:

BLAH = ( function() {

  var someMethod = function(data) {

  };



  return {
      someMethod: function(data) {
          this.someMethod(data);
      }

  }

})();

在public someMothod中,使用this引用内部函数是不错的做法?

重要还是只是让事情更清楚?

4 个答案:

答案 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);