-
Notifications
You must be signed in to change notification settings - Fork 52
框架设计
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要好