剛接觸Javascript(以下簡稱JS)時,很不能習慣這樣的寫法
“Hello World”.length
基於C語言的理解,應該是要這樣寫才對
var str = “Hello World”
str.length
對於這個讓我不舒服的特性,這次讓我有不一樣的理解視角。從較高的層面(語言設計時的精神)來說,C語言屬於強型別(Strong Type),而JS是弱型別(Weak Type)的語言。
強弱型別語言的分辨點在於,宣告一個變量時是否要宣告變量的型別(type)。加上JS本身核心的根本精神之一就是舉目所見皆為物件(Objects) [手握鐵鎚,一切都是釘子?索爾Thor?] 。
基於這樣的精神下,回頭看” ”具備的特色,便能有更和情理的理解。也就是 — 索爾(設計者)跟你說,既然所有都是物件,那樣這個” ”符號,不也等同宣告 : 這必然是一個字串(String)的物件! 那身為阿斯嘉的國王,我必當賦予它具備所有字串的方法[能力]與屬性[特質]! 所以 ”HelloWorld”.length 這種寫法也就一點都不習慣了!
值得再說細一點的是
“HelloWorld”.length 的 length 可看作是 ’屬性’
“HelloWorld”.toUpperCase() 的 toUpperCase() 可看作是 ’方法’
是的! 有沒有括號的區別,再一次很好的呼應物件的觀念!
最後一點點小心得:很多語法剛接觸都很生硬,總感覺像”高嘉瑜唱歌” — 不是那個調… :P 但理解語言的精神後,對語言的理解認知就能有更好的提昇!