一、热身——先看实战代码
a.js 文件
// 定义Wall及内部方法;(function(window, FUNC, undefined){ var name = 'wall'; Wall.say = function(name){ console.log('I/'m '+ name +' !'); }; Wall.message = { getName : function(){ return name; }, setName : function(firstName, secondName){ name = firstName+'-'+secondName; } };})(window, window.Wall || (window.Wall = {}));
index.jsp文件
<script type='text/javascript'> <% // Java 代码直出 js out.print("Sniffer.run({'base':window,'name':'Wall.say','subscribe':true}, 'wall');/n"); %> // Lab.js是一个文件加载工具 // 依赖的a.js加载完毕后,则可执行缓存的js方法 $LAB.script("a.js").wait(function(){ // 触发已订阅的方法 Sniffer.trigger({ 'base':window, 'name':'Wall.say' }); });</script>
这样,不管a.js文件多大,Wall.say('wall')都可以等到文件真正加载完后,再执行。
二、工具简介
// 执行 Wall.message.setName('wang', 'wall');Sniffer.run({ 'base':Wall, 'name':'message.setName', 'subscribe':true}, 'wang', 'wall');
看这个执行代码,你也许会感觉困惑-什么鬼!
注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
新闻热点
疑难解答