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);
posted @ 2015-01-15 10:10  JinksPeng  阅读(132)  评论(0编辑  收藏  举报