- // 定义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 = {}));
- <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');
看这个执行代码,你也许会感觉困惑 - 什么鬼!
来源: