Pages

2011年4月15日 星期五

[JavaScript] 初學者的心得1

終於開始踏出JavaScript學習的第一步。
這禮拜與幾個同學討論,並研究JavaScript,記錄下一些JavaScript筆記,整理如下:

1. addEventListener()是IE以外的瀏覽器在使用的(如FireFox),IE使用attachEvent()。
2. 建立一個物件:
var a = new Object(); //把Object()當成建構式來用
Object括號內可以有參數值。

如果寫:
var a = Object(); //代表把Object()當成function來用

3. prototype:函式都有prototype,我的想法是每個物件都有自己的屬性以及從prototype繼承來的屬性。自己的屬性只屬於自己才能使用,而prototype則是只要相同類別的物件都可以使用。

另外讀取某個物件的屬性時,會先從物件自己的屬性去尋找,若物件自己沒有定義這個屬性,則會去物件繼承下來的prototype去尋找有沒有這個屬性。

4. 另外今天的討論過程也提到,JavaScript的function有幾種不同的定義方式:
(1) var func1 = function() { //在此定義函式內容}
(2) function func2() {//在此定義函式內容}
(3) var func3 = new Function("a","b","alert(a+b);")

其中第(3)個大寫開頭的Function是一種建構式,括號裡面可以列出要傳遞的參數,這些參數必須是字串。最後一個參數是函式內容。
使用Function建構式可以動態的新增函式內容,我之前詢問許多同學是否有任何語言可以動態新增函式定義,根據我目前的學習,JavaScript似乎可以做到。

5. 使用toString()可以將很多種東西轉換為字串。
我自己將上面的func1、func2跟func3轉換為字串(假設func1跟func2都沒有定義任何函式內容),在JavaScript控制台下看輸出結果如下:

>func1.toString()
"function (){}"

>func2.toString()
"function func2(){}"

>func3.toString()
"function anonymous(a,b) {
alert(a+b);
}"
發現只有func2有函數名字,其原因目前我還不太清楚(我學東西特別慢...唉唉),等下一篇再記錄function相關的心得吧。

沒有留言:

張貼留言