mvc-1mvc和类(2)

添加私有函数

var Person = function() {};
(function() {
  var findById = function(){};
  Person.find = function(id) {
    if(/**/) {
      return findById(id);
    }
    //......
  }
})();

函数调用--作用域

  • 使用self暂存this

    var clicky = {
        wasClicked: function () {},
        addListeners: function() {
            var self = this;
            $(".clicky").click(function() {
            //更改了上下文,这里指代当前节点
                self.wasClicked();
            })
        }
    }
    clicky.addListeners();
  • 使用apply保持原始的上下文

    //类似jquery.proxy;
    var proxy = function(func, thisObject) {
      return(function() {
      	//注意这里的arguments是函数返回执行时传入的jquery.event;
        return func.apply(thisObject, arguments);
      });
    }
    var clicky = {
      wasClicked: function() {alert(1)},
      addListeners: function() {
        $(".clicky").click(proxy(this.wasClicked, this));
      }
    }
    clicky.addListeners();
  • '委托'调用

    var App = {
      log: function() {
      	if(typeof console == "undefined") return;
      	var args = $.makeArray(arguments);
      	args.unshift("(App)");
      	//委托给console,注意这里输出的是一个个字符串;
      	console.log.apply(console, args);
      }
    }
    App.log(0,1);

你可能感兴趣的:(mvc)