js 語言斷想

2021-04-08 19:42:19 字數 1395 閱讀 2076

關於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的目的是幫助使用者進行決策分析,從多維的角度來分析現狀,給決策者做出正確的決策提供可靠的資料基礎與背景,為企業的發展做出正確的...