JavaScript實例講解
這帶來的好處是內部函數可以訪問定義它們的外部函數的參數和變量。
首先,我們來構造一個簡單的對象。
複製代碼 代碼如下:
var testObj = {
value: 10,
add: function(inc){
e += (typeof inc === "number") ? inc : 1;
}
};
();
e; // 11
(2);
e; // 13
這樣寫就有一個問題,value值不能保證不會被非法修改,可以按如下的方法進行修改。
複製代碼 代碼如下:
var testObj = (function(){
var value = 10;
return {
add: function(inc){
value += (typeof inc === "number") ? inc : 1;
},
getValue: function(){
return value;
}
};
})();
();
alue(); // 11
(2);
alue(); // 13
我們可以通用調用一個函數的形式去初始化testObj,該函數會返回一個對象字面量,函數裏定義了一個value變量,該變量對add和getValue方法總是可用的,但函數的作用域使得它對其他的程序來説是不可見的。同時,我們還可以得出一個結論,內部函數擁有比它的外部函數更長的.生命週期。
我們再繼續看一個構造函數調用的例子。
複製代碼 代碼如下:
var MyObj = function(str){
us = str;
};
tatus = function(){
return us;
};
var obj = new MyObj("javascript");
tatus(); // "javascript"
這樣寫並沒有錯,但是會有一點“多此一舉”,為什麼要用一個getStatus方法去訪問一個本可以直接訪問到的屬性呢?如果status是私有屬性,那當然才有意義。
複製代碼 代碼如下:
var obj = function(status){
return {
getStatus: function(){
return status;
}
};
};
var myObj = obj("javascript");
tatus(); // "javascript"
這裏當我們調用obj的時候,它返回包含getStatus方法的一個新對象,該對象的一個引用保存在myObj中,即使obj已經返回了,但getStatus方法仍然享有訪問obj對象的status屬性的特權。getStatus方法並不是訪問該參數的一個副本,它訪問的就是該參數本身。這是可能的,因為該函數可以訪問它被創建時所處的上下文環境,這被稱為閉包。
-
講解HTML中iframe和frame的區別
不知道你在項目中用過frameset屬性沒有,frameset這個屬性是在去年我在一個在線客服系統製作中用過,因為客服系統要有固定的佈局,上面一塊,下面一塊等等,當時就是用的frameset和frame。在我用完了這些屬性之後,我才明白了iframe和frame的`區別。因為在這之前,我項目中...
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
製作網頁,dreamweaver的基本步驟
網頁設計的目的就是產生網站。簡單的信息如文字,圖片(GIFs,JPEGs,PNGs)和表格,都可以通過使超文件標示語言、可擴展超文本標記語言等標示語言放置到網站頁面上。以下是小編為大家搜索整理的Dreamweaver製作網頁的基本步驟,歡迎閲讀!更多精彩內容請及時關注我們考試...
-
網頁設計很糟糕的10個原因
個好的網頁設計,不僅吸引眼球,也是實用的、直觀的、層級簡單卻足夠複雜到保持用户的興趣。但是不好的網頁設計是由很多原因造成的,下面是關於網頁設計很糟糕的10個原因,歡迎閲讀了解!沒有足夠的空白空白可以説是設計中最重要的一部分。它有助於防止用户在瀏覽網站時...