定義函式有兩種方式:一種是函式宣告,另一種就是函式表示式
//1,函式宣告
function
functionname
(arg0, arg1, arg2)
//函式宣告的乙個重要特徵是,函式宣告提公升,意思是在執行**之前會先讀取函式宣告。而函式表示式沒有這個特徵。
eg: sayhi();
function
sayhi
()//2,函式表示式
var functionname = function
(arg0, arg1, arg2)
在非嚴格模式下使用arguments.callee
,它是乙個指向正在執行的函式的指標,可以用它來代替函式名實現對函式的遞迴呼叫。在嚴格模下可以使用命名函式表示式來達到相同的結果。
function
factorial
(num)else
}//非嚴格模式
function
factorial
(num)else
}//嚴格模式
var factorial = else
}
閉包是指有權訪問另乙個函式作用域中的變數的函式。建立閉包的常見方式是在乙個函式內部建立另乙個函式。
在全域性函式中,this等於window。
var name = 'the window';
var obj =
}alert(obj.getnamefunc()); //'the obj'
alert((obj.getnamefunc)()); //'the obj'
alert((obj.getnamefunc = obj.getnamefunc)()); //'the window'
var name = 'the window';
var obj = }}
alert(obj.getnamefunc()()); //'the window'
//把this物件儲存在閉包中的另乙個可以訪問到的變數中。
var name = 'the window';
var obj = }}
alert(obj.getnamefunc()()); //'the obj'
js沒有塊級作用域,但是可以將語句塊包含在函式中模仿塊級作用域。
var somefunc = function
();
somefunc(); //函式後面加括號,表示立即呼叫執行。但是只是針對函式表示式。
function
()(); //出錯,函式宣告後面不能跟圓括號,但是可以給函式宣告加上一對圓括號,表示將函式宣告轉換成函式表示式,如下所示。
(function
())();
任何在函式中定義的變數,都可以認為是私有變數。我們把有權訪問私有變數和私有函式的公有方法稱為特權方法。有兩種方法建立特權方法。
//方法一:在建構函式中定義特權方法
function
myobject
() //特權方法
this.publicmethod = function
() }
//和第二種方法對比,建構函式中定義特權方法針對每個例項都會建立一組新的方法
function
person
(name);
this.setname = function
(value);
}var person1 =new person('dan');
var person2 =new person('jun');
alert(person1.getname()); //'dan'
alert(person2.getname()); //'jun'
//方法二:在私有作用域中定義私有變數或函式,同樣也可以建立特權方法
(function
(); //公有/特權方法
person.prototype.getname = function
(); person.prototype.setname = function
(value);
})();
var person1 = new person('dan');
alert(person1.getname()); //'dan'
person1.setname('jun');
alert(person1.getname()); //'jun'
var person2 = new person('jenny');
alert(person1.getname()); //'jenny'
alert(person2.getname()); //'jenny'
前面的模式都是用於為自定義型別建立私有變數和特權方法,而模組模式則是為單例建立私有變數和特權方法。所謂單例,指的就是只有乙個例項的物件,按照慣例,js以物件字面量的方式來建立單例物件。
var singleton = function
() //特權/共有方法和屬性
return
}}
簡言之,如果必須建立乙個物件並以某些資料對其進行初始化,同時還要公開一些能夠訪問這些私有資料的方法,那麼就可以使用模組模式。 第七章讀書筆記
儘管linux 驅動直接與硬體打交道,但並不是 linux 驅動直接向硬體中的記憶體寫資料,而是與本機的 i o記憶體進行互動。所謂 i o記憶體是通過各種介面連線到主機的硬體在主機記憶體中的對映。led驅動與 word count 驅動的實現步驟類似,只是某些功能使用了不同的實現方法。對於解除安裝...
c Primer讀書筆記(第七章 類)
類的基本思想 資料抽象 data abstraction 和封裝 encapsulation 資料抽象依賴於 介面 inte ce 和實現 implementation 分離的程式設計 引入this指標 成員函式可以通過乙個this指標來訪問呼叫它的那個物件 引入const成員函式 const成員函...
程式設計珠璣 讀書筆記 第七章 粗略估計
2013 07 14 15 43 38 本章主要講解粗略估算 以及如何進行粗略估算。對於大多數程式設計師而言,可能覺得粗略估算與程式設計沒有什麼關係,本章給出了一些簡單的例子,說明粗略估算可以幫助快速估計程式的效能,驗證程式的正確性。自己在程式設計中基本沒有用到過粗略估算,所以對於粗略估算的作用還是...