瘦版的Delegate,支持Actionscript1.0
Actionscript 2.0 内置了mx.utils.Delegate的类, 用法就不说了, 自己查查Google, 写了个瘦版的, 经测试可以支持Actionscript 1.0 ...
var fns = []; var delegate = function(o, f) { var i = fns.length; var fn = function(){ fns[i].f.apply(fns[i].o, [arguments,this]); }; fns[i] = {o:o, f:f}; return fn; } /* usage: var onStart = function() { trace(this); }; btn_start.onRelease = delegate(this, onStart); // output: _level0 //btn_start.onRelease = onStart; // output: _level0.btn_start */
为什么说是廋版的呢, 其实就是编译后的文件小了一些, 看数据:
使用 mx.utils.Delegate, 文件大小会增加841 byte, 使用上面的代码, 文件大小只增加379 byte, 瘦了462 byte, 相当于小了一半多, 如果算上调用语法所占的大小, 应该不只少462 byte.虽然按字节数来说, 瘦得不多, 可是大家都知道积少成多的道理, 环保呀 ...