javascript全局变量封装模块实现代码


Posted in Javascript onNovember 28, 2012

下面的代码是我的测试代码,注释很重要:

/*global window,jQuery,validate_email,masterUI,$,rest*/ 
/** Enable ECMAScript "strict" operation for this function. See more: 
* http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ 
* http://stackoverflow.com/questions/5020479/what-advantages-does-using-functionwindow-document-undefined-windo 
* Q1: Why are window and document being fed instead of just being accessed normally? 
* A1: Generally to fasten the identifier resolution process, having them as local variables can help (although IMO the performance improvements may be negligible). 
* A2: Passing the global object is also a widely used technique on non-browser environments, where you don't have a window identifier at the global scope, e.g.: 
* (function (global) { 
* //.. 
* })(this); // this on the global execution context is the global object itself 
* A3: Passing window and document allows the script to be more efficiently minified 
* 
* Q2: Why the heck is undefined being passed in? 
* A1: This is made because the undefined global property in ECMAScript 3, is mutable, meaning that someone could change its value affecting your code, for example: 
* undefined = true; // mutable 
* (function (undefined) { 
* alert(typeof undefined); // "undefined", the local identifier 
* })(); // <-- no value passed, undefined by default 
* If you look carefully undefined is actually not being passed (there's no argument on the function call), 
* that's one of the reliable ways to get the undefined value, without using the property window.undefined. 
* 
*/ 
(function(window, document, undefined) { 
"use strict"; 
window.test = { 
init: function () { 
"use strict"; 
alert("ok"); 
} 
}; 
})(window, document);// no undefined parameter here to avoid using mutable window.undefined changed by other guy

1.说明,参考了一篇文章和stackoverflow上的一个帖子
2.(function(){})() 这种代码写在独立的js文件里,当js文件被html加载的时候,该函数就会执行。实际上创建了windows.text对象。
以后html代码就可用test.init的形式调用方法。
测试html部分代码如下:
[plain] view plaincopyprint? 
<head> 
<title>AppEngine SDK</title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<script type="text/javascript" src="../../master/script/third_party/jquery-1.8.0.min.js"></script> 
<script type="text/javascript" src="../../master/plugin/jquery-validation-1.9.0/jquery.validate.js"></script> 
<script type="text/javascript" src="../../master/plugin/artDialog4.1.6/jquery.artDialog.js"></script> 
<script type="text/javascript" src="../../master/script/app/test.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
test.init(); 
}) 
</script> 
</head>

3.Jslint会报两个问题,一是关于undefined的,没找到什么好方法,任它抱怨吧。另一格式最后调用方式要改成:
[javascript] view plaincopyprint?}(window, document)); }(window, document));

无所谓了,就任由它吧。只要功能正常就行。
Javascript 相关文章推荐
超链接的禁用属性Disabled使用示例
Jul 31 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
Apr 20 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
jQuery解析返回的xml和json方法详解
Jan 05 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 Javascript
JQuery插件tablesorter表格排序实现过程解析
May 28 jQuery
Vue+element-ui添加自定义右键菜单的方法示例
Dec 08 Vue.js
threejs太阳光与阴影效果实例代码
Apr 05 Javascript
Javascript Request获取请求参数如何实现
Nov 28 #Javascript
js移除事件 js绑定事件实例应用
Nov 28 #Javascript
js arguments对象应用介绍
Nov 28 #Javascript
web基于浏览器的本地存储方法应用
Nov 27 #Javascript
extjs 04_grid 单击事件新发现
Nov 27 #Javascript
javascript 正则表达式相关应介绍
Nov 27 #Javascript
javascript 二进制运算技巧解析
Nov 27 #Javascript
You might like
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
javascript调试说明
2010/06/07 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
详解vue 实例方法和数据
2017/10/23 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
python reverse反转部分数组的实例
2018/12/13 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
女儿十岁生日答谢词
2014/01/27 职场文书
《雾凇》教学反思
2014/02/17 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
学校安全生产承诺书
2014/05/23 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
死亡证明书样本说明
2014/10/18 职场文书
Redis+AOP+自定义注解实现限流
2022/06/28 Redis