關於js的實質,前人已經指出,是c風格的lisp.越用越發現其事確實.
js 的核心**只有兩句:
第一句:
vara =;
第二句:
eval();
第一句包括了js對資料組織的觀念.一對簡單的 , 裡面盛放的可以是資料,可以是**,可以充當陣列,可以充當堆疊,佇列,也可以充當雜湊表,最後,又可以充當物件.
充當陣列堆疊看看它的方法即可了解. 充當雜湊表是怎麼回事呢?
試看如下**:a['
name']
='孟昭'
;alert(a[
'name
']);
js的物件即是通過雜湊表來實現的,如上面的 a['name'], 變一種寫法:
alert(a.name);
可見, 屬性其實就是書寫形式上的乙個語法糖.
要給a物件增加乙個方法,可以這樣做:a['
sayhello']
=function
()...
...
a.sayhello();
在js的世界觀裡,物件就是**塊和屬性塊的雜湊.
坊間一般先介紹 function 模擬class, 其實遠矣, js 的function模擬oo語言的類不過是js邊邊角角的一塊.
請看上面的 fucntion() 內的this, 在該function被呼叫時, this所指的實際上是該塊**所屬的a.
回頭看這種寫法:
function
man()
...}
vara =
newman();
a.sayhello();
對比this的用法.在 [ ] 的理念裡, this 代表的是乙個先行宣告的a, 而在 function man 中,this代表的是乙個未宣告的新變數.該 function 被叫後為匿名變數設定name和sayhello兩個成員. 在 var a = new man() 執行後, 借助new 關鍵字, a 變數獲得對該匿名變數的引用.
因此,在js裡,function作為一種輔助機制,其功能是對**塊進行封裝.
而**塊的執行, 在js的理念中,實為對文字的一段 eval(). 如**a['
sayhello']
=function
()...
a.sayhello();
書寫為以下形式,相信有助於了解它的實質:a['
sayhello']
="";
eval(a.sayhello);
最後,請試驗一下兩次命令的alert(a.sayhello),觀察 sayhello裡究竟放的是什麼.
到這一步,對於function的認識更加明朗了,其實就是給**塊做了乙個包裝+命名.
當然,沒有 function 也是不行的.
手機開發斷想
最近新買了一部nokia的e52手機,過去並未接觸過symbian的作業系統,這次因手機的緣故,特意到幾大論壇轉了轉,這一轉,才真正曉得原來在s60的開發區裡面是如此的熱鬧,於是就有一些有關軟體開發的想法,不吐不快。在此與各位朋友討論一番。平時也做過一些軟體開發方面的工作,從最初的單打獨鬥,到現在的...
「三八」節斷想
秀才 我最喜歡的t恤 零上12度。春天在走來 我有非常多的語言讚美我身邊的和這個世界所有的女人們。過節的時候,我們這些老師沒放假,有晚自習的奮鬥的更要晚一點。很多的單位可以適度放假的傳統節日對於我們來說,都是毫無意義的。我們有教學任務的壓力。有的單位發了床單,有的單位發了購物卡,我們單位給每個女老師...
BI基本架構和ETL斷想
business intelligence bi data warehouse dw olap data mining dm 商業智慧型 資料倉儲 聯機分析 資料探勘 做bi的目的是幫助使用者進行決策分析,從多維的角度來分析現狀,給決策者做出正確的決策提供可靠的資料基礎與背景,為企業的發展做出正確的...