下面的代碼是我的測試代碼,註釋很重要:
/*global window,jQuery,validate_email,masterUI,$,rest*/
/**為此函數啟用 ECMAScript「嚴格」操作。看更多:
* 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:為什麼視窗和文件被饋送而不是正常存取?
* A1:通常為了加快標識符解析過程,將它們作為局部變數會有所幫助(儘管在我看來,效能改進可能可以忽略不計)。
* A2:傳遞全域物件也是非瀏覽器環境中廣泛使用的技術,在非瀏覽器環境中,在全域範圍內沒有視窗標識符,例如:
* (function (global) {
* //..
* })(this); // 全域執行上下文中的this 是全域物件本身
* A3: 傳遞視窗和文件可以更有效地縮小腳本
*
* Q2: 為什麼傳入的是undefined ?
* A1:這是因為ECMAScript 3 中未定義的全域屬性是可變的,這表示有人可以更改影響您程式碼的值,例如:
* undefined = true; // 可變
* (function (undefined) {
*alert(typeof undefined); // “undefined”,本地標識符
* })(); // * 如果你仔細觀察的話,實際上未傳遞undefined (函數呼叫中沒有參數),
* 這是取得未定義值,不使用屬性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?
AppEngine SDK
3.Jslint會報兩個問題,一是關於undefined的,沒找到什麼好方法,任它抱怨吧。另一種格式最後呼叫方式要改成:
無所謂了,就任由它吧。只要功能正常就好。