Skip to content
LYF edited this page Jul 14, 2016 · 40 revisions

###一、闭包闭住公共变量

var ZingTouch = {
    _region:[], // 公共变量
    Region: function(){
        var id = ZingTouch._region.length;
        console.log(id);
        ZingTouch._region.push(obj);
    }
}

var region = new ZingTouch.Region(); // 0
var region2 = new ZingTouch.Region();// 1
var region3 = new ZingTouch.Region();// 2

https://github.com/zingchart/zingtouch/blob/master/src/ZingTouch.js

###二、不知道作用

var Trigger = function(_element) {
  this.element = _element;
  this.left = function(_this){
     return function(){
       return _this.element.left
     }  
  }(this)
}

https://github.com/terwanerik/ScrollTrigger/blob/master/ScrollTrigger.js

###三、定义私有变量

var Trigger = function(_element){
   this.element = _element;
   var xoffset = 0; // 私有变量
   var yoffset = 0; // 私有变量
}

https://github.com/terwanerik/ScrollTrigger/blob/master/ScrollTrigger.js

###四、看avalon源码,很屌的写法

// 惰性函数
function CSPHack(array){
     var a = array.reverse().join("")
     return function(v){
         return window[a].apply(0, v)
     }
     return window
 }
 var CSPcompile = CSPHack(["n","o","i","t","c","n","u", "F"])

 // 类似于
 // var f = Function.apply(0,['a','b','return a + b'])
 // f(2, 3); // 5
 function CSPcompile(array){
     return Object.constructor.apply(0,array)
}

// 一个小技巧。由于与this相关,js引擎总能保证this是一个引用值,所以用call/apply方法时,context随便,第一个参数可写成0,比写成null要好
Clone this wiki locally