1

出于某种原因,我无法将设置方法中的函数调用到我的 init 方法中。

    // this is how I use it now(dont work)

Plugin.prototype = {

    settings: function(){

        function hello(name){
            alert('hi, '+name)
        }
    },

    init: function(){
        this.settings() 
        hello('John Doe')
    }

}
4

2 回答 2

4

Javascript 有函数作用域。如果您在另一个函数中声明一个函数,则它仅在外部函数内部可见。

于 2012-12-10T23:43:13.030 回答
1

这可能是你的意思:

Plugin.prototype = {

    settings: function(){

    },

    hello: function(name){
        alert('hi, '+name);
    },

    init: function(){
        this.settings();
        this.hello('John Doe');
    }

};

或者,如果您想将 hello() 设为私有,您可以这样做:

Plugin.prototype = function(){

  var hello = function (name){
      alert('hi, '+name);
  };   

  return {
      settings: function(){
      },

      init: function(){
          this.settings();
          hello('John Doe');
      }
  };
}();

jsfiddle

于 2012-12-11T00:32:28.893 回答