浏览 1214 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-01-07 关键字: js
ext.js文件中有这样一段js代码
(function(){
var ua = navigator.userAgent.toLowerCase();
var isStrict = document.compatMode == "CSS1Compat",
isOpera = ua.indexOf("opera") > -1,
isSafari = (/webkit|khtml/).test(ua),
isIE = ua.indexOf("msie") > -1,
isIE7 = ua.indexOf("msie 7") > -1,
isGecko = !isSafari && ua.indexOf("gecko") > -1,
isBorderBox = isIE && !isStrict,
isWindows = (ua.indexOf("windows") != -1 || ua.indexOf("win32") != -1),
isMac = (ua.indexOf("macintosh") != -1 || ua.indexOf("mac os x") != -1),
isLinux = (ua.indexOf("linux") != -1),
isSecure = window.location.href.toLowerCase().indexOf("https") === 0;
})();
这段代码应该是加载后自动执行,不知道这没写的用以何在?是不是为了防止命名冲突? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-01-07
(function(){})() EXT里用的比较多,个人感觉这也是避免命名冲突的便捷方法。
先声明一些变量,接着Ext.apply()变量到Ext对象 /** @type Boolean */
isOpera : isOpera,
/** @type Boolean */
isSafari : isSafari,
/** @type Boolean */
isIE : isIE,
/** @type Boolean */
isIE6 : isIE && !isIE7,
/** @type Boolean */
isIE7 : isIE7,
/** @type Boolean */
isGecko : isGecko,
/** @type Boolean */
isBorderBox : isBorderBox,
/** @type Boolean */
isLinux : isLinux,
/** @type Boolean */
isWindows : isWindows,
/** @type Boolean */
isMac : isMac,
/** @type Boolean */
isAir : !!window.htmlControl,
|
|
| 返回顶楼 | |
|
时间:2008-01-07
这是不是所谓的js闭包呢?
|
|
| 返回顶楼 | |
|
时间:2008-01-07
我认为是。
见D.C对闭包的定义: 引用 The scope that an inner function enjoys continues even after the parent function have returned.
每个function都有自己的scope,也就是自己的closure了 |
|
| 返回顶楼 | |
|
时间:2008-01-07
sp42 写道 我认为是。
见D.C对闭包的定义: 引用 The scope that an inner function enjoys continues even after the parent function have returned.
每个function都有自己的scope,也就是自己的closure了 错错!!! 我们不必抠概念, 就上面的代码没有形成闭包。 |
|
| 返回顶楼 | |
|
时间:2008-01-07
closure几乎总是形成的,上面这个例子也不例外。只是是否利用得到closure的好处的问题。
|
|
| 返回顶楼 | |







