JavaScript和客戶端編程語言C++,java,objective-C的三大不同

JavaScript並不複雜,甚至有些簡單。很多沒有客戶端編程基礎的網頁開發人員都可以很快掌握,而有這些經驗的人反倒沒那麼容易。在客戶端開發中形成的有些概念和思維方式,在JavaScript開發中不僅沒用,反而會產生誤導。有幾個問題需注意。

一是類型

在客戶端編程語言中,數據都有類型,包括基本的數據類型和用戶定義的類型,如類、結構體等。如果你以爲JavaScript也是這樣,那你就慘了。用客戶端編程語言的眼光來看JavaScript數據結構,簡直就是亂的。JavaScript的變量幾乎沒有類型,一個變量可以被賦給任何值,可以在任意時候給它增加一個域(或者叫字段、成員之類的)。這和客戶端編程語言的類完全不同,沒有任何控制。你可以隨時隨地把一個變量的數據結構擺弄成任何樣子。這就是JavaScript的對象模型(JSON)。把一堆數據堆在一起即可。那麼JavaScript中的類是什麼呢?其實就是一個函數,用來生成一堆數據。因爲是使用同一個函數生成的,所以這一堆數據也有很多共同之處,這就是類了。

二、函數

在客戶端編程語言中,函數和數據是非常不同的東西,但在JavaScript中,函數其實就是代碼數據。函數可以像變量那樣被賦來賦去。如果你有興趣,可以把函數像字符串那樣打印出來。同樣,函數也可以被塞到任意一個數據結構中,在需要的時候拉出來加個括號調用它,但這個函數本身和包含它的那個數據結構沒一點關係。如果你像客戶端編程語言類的成員函數那樣理解它就完全錯了,它是個獨立的傢伙,也不能隨意訪問父數據結構的其它成員。

三、this

在JavaScript中也有this,但這個this指是誰就沒個準了。在使用JSON方式定義數據的時候,客戶端編程序員通常會以爲this就是包含函數的那個數據結構本身。有的時候是的確這樣的,但並不總是這樣。JavaScript可以使用任意對象做爲this調用函數,比如使用call方法。在函數被賦值到其它位置以後,這個this就更不知道是誰了。

事實上還有不少概念,同樣需要重新理解。C++程序員的思想太複雜了,需要簡化一下,仔細看一下JSON在JavaScript中的作用,可能會有用。


原文檔:C++程序員學習JavaScript的三道檻


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章