
以下代码示例,如果不用 window 如何,在别的 .js 文件里引用呢?
// app.js // ------ (function() { require(['router'], function(router) { var app = { initialize: function() { this.bindEvents(); }, bindEvents: function() { window.onload = this.onDeviceReady(); }, onDeviceReady: function() { main.receivedEvent('deviceready'); }, receivedEvent: function(event) { switch (event) { case 'deviceready': app.initMian(); break; } }, initMian: function() { // 不用 window 如何把这货在别的 .js 里可用? window.db = openDatabase('db', '1.0', 'description', 10240); window.$ = jQuery; } }; app.initialize(); }); })(); 1 whatisnew OP 在另外一个文件,比如,router.js 我就可以用 $('.element').on('event', function... 我就可以用 db.transaction(function(tx) { ... |
2 yangff 2015 年 4 月 18 日 via Android export? |
![]() | 3 haozhang 2015 年 4 月 18 日 用命名空间啊,你暴露一个变量在全局环境里面,所有东西挂在那个变量上面。 |
4 jarlyyn 2015 年 4 月 18 日 把你所有的js放在一个闭包/空间里呢? 我觉得直接用window.db不如直接用windows.myapp.db. |
7 lk09364 2015 年 4 月 18 日 @whatisnew > 那这样的话,除了名字不叫 window 有什么区别么。。 对,没有,不过这样就不会和别的库冲突了。 node.js 里的 export 容许你 require() 出来,并自定义变数名称,这样就绝对不会冲突 |
9 whatisnew OP @wxt2005 就是只有在 app.js 这个文件里才用 window,其他都是 require 出来的 mvc 文件,但是在 model 和 controller 这层要用到 db 这些变量,因为不可能每 new 一次都 open 一下 db 啊 |
10 haozhang 2015 年 4 月 18 日 去看看YUI...了解下明明空间。 |
11 haozhang 2015 年 4 月 18 日 命名空间 ... |
13 NemoAlex 2015 年 4 月 19 日 你 @ 了我,所以我进来看了一下 但是看完,我都不知道说什么好了 所以就这样吧 |
14 ghbjy1128 2015 年 4 月 25 日 楼主的问题其实就是Js设计模式的问题,现在有很多流派,自己随便选个自己喜欢的就可以。 个人偏好还是定义一个命名空间,如果有什么需要外部调用的,return 就可以,大概这样子。 window.FUN = (window.FUN || {}); // Main Functions FUN = (function ($) { 'use strict'; function todo() { ... } return { todo: doing } }); ... FUN.doing(); |