你看,數據代碼間的關系與物質能量間的關系有著驚人的相似。數據也是有慣性的,如果沒有代碼來施加外力,她總保持自己原來的狀態。而代 " /> 色天天综合,波多野结衣中文一区,怡红院视频网

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

悟透JavaScript整理版第1/2頁

數據天生就是文靜的,總想保持自己固有的本色;而代碼卻天生活潑,總想改變這個世界。

   你看,數據代碼間的關系與物質能量間的關系有著驚人的相似。數據也是有慣性的,如果沒有代碼來施加外力,她總保持自己原來的狀態。而代碼就象能量,他存在的唯一目的,就是要努力改變數據原來的狀態。在代碼改變數據的同時,也會因為數據的抗拒而反過來影響或改變代碼原有的趨勢。甚至在某些情況下,數據可以轉變為代碼,而代碼卻又有可能被轉變為數據,或許還存在一個類似E=MC2形式的數碼轉換方程呢。然而,就是在數據和代碼間這種即矛盾又統一的運轉中,總能體現出計算機世界的規律,這些規律正是我們編寫的程序邏輯。

    不過,由于不同程序員有著不同的世界觀,這些數據和代碼看起來也就不盡相同。于是,不同世界觀的程序員們運用各自的方法論,推動著編程世界的進化和發展。

    眾所周知,當今最流行的編程思想莫過于面向對象編程的思想。為什么面向對象的思想能迅速風靡編程世界呢?因為面向對象的思想首次把數據和代碼結合成統一體,并以一個簡單的對象概念呈現給編程者。這一下子就將原來那些雜亂的算法與子程序,以及糾纏不清的復雜數據結構,劃分成清晰而有序的對象結構,從而理清了數據與代碼在我們心中那團亂麻般的結。我們又可以有一個更清晰的思維,在另一個思想高度上去探索更加浩瀚的編程世界了。

    在五祖弘忍講授完《對象真經》之后的一天,他對眾弟子們說:“經已講完,想必爾等應該有所感悟,請各自寫個偈子來看”。大弟子神秀是被大家公認為悟性最高的師兄,他的偈子寫道:“身是對象樹,心如類般明。朝朝勤拂拭,莫讓惹塵埃!”。此偈一出,立即引起師兄弟們的轟動,大家都說寫得太好了。只有火頭僧慧能看后,輕輕地嘆了口氣,又隨手在墻上寫道:“對象本無根,類型亦無形。本來無一物,何處惹塵埃?”。然后搖了搖頭,揚長而去。大家看了慧能的偈子都說:“寫的什么亂七八糟的啊,看不懂”。師父弘忍看了神秀的詩偈也點頭稱贊,再看慧能的詩偈之后默然搖頭。就在當天夜里,弘忍卻悄悄把慧能叫到自己的禪房,將珍藏多年的軟件真經傳授于他,然后讓他趁著月色連夜逃走...

    后來,慧能果然不負師父厚望,在南方開創了禪宗另一個廣闊的天空。而慧能當年帶走的軟件真經中就有一本是《JavaScript真經》!

回歸簡單

    要理解JavaScript,你得首先放下對象和類的概念,回到數據和代碼的本原。前面說過,編程世界只有數據和代碼兩種基本元素,而這兩種元素又有著糾纏不清的關系。JavaScript就是把數據和代碼都簡化到最原始的程度。

    JavaScript中的數據很簡潔的。簡單數據只有 undefined, null, boolean, number和string這五種,而復雜數據只有一種,即object。這就好比中國古典的樸素唯物思想,把世界最基本的元素歸為金木水火土,其他復雜的物質都是由這五種基本元素組成。

    JavaScript中的代碼只體現為一種形式,就是function。

    注意:以上單詞都是小寫的,不要和Number, String, Object, Function等JavaScript內置函數混淆了。要知道,JavaScript語言是區分大小寫的呀!

    任何一個JavaScript的標識、常量、變量和參數都只是unfined, null, bool, number, string, object 和 function類型中的一種,也就typeof返回值表明的類型。除此之外沒有其他類型了。

    先說說簡單數據類型吧。

    undefined:   代表一切未知的事物,啥都沒有,無法想象,代碼也就更無法去處理了。
                      注意:typeof(undefined) 返回也是 undefined。
                              可以將undefined賦值給任何變量或屬性,但并不意味了清除了該變量,反而會因此多了一個屬性。

    null:            有那么一個概念,但沒有東西。無中似有,有中還無。雖難以想象,但已經可以用代碼來處理了。
                      注意:typeof(null)返回object,但null并非object,具有null值的變量也并非object。

    boolean:      是就是,非就非,沒有疑義。對就對,錯就錯,絕對明確。既能被代碼處理,也可以控制代碼的流程。

    number:      線性的事物,大小和次序分明,多而不亂。便于代碼進行批量處理,也控制代碼的迭代和循環等。
                      注意:typeof(NaN)和typeof(Infinity)都返回number 。
                              NaN參與任何數值計算的結構都是NaN,而且 NaN != NaN 。
                              Infinity / Infinity = NaN 。

    string:         面向人類的理性事物,而不是機器信號。人機信息溝通,代碼據此理解人的意圖等等,都靠它了。

     簡單類型都不是對象,JavaScript沒有將對象化的能力賦予這些簡單類型。直接被賦予簡單類型常量值的標識符、變量和參數都不是一個對象。

    所謂“對象化”,就是可以將數據和代碼組織成復雜結構的能力。JavaScript中只有object類型和function類型提供了對象化的能力。

沒有類

    object就是對象的類型。在JavaScript中不管多么復雜的數據和代碼,都可以組織成object形式的對象。

    但JavaScript卻沒有 “類”的概念!

    對于許多面向對象的程序員來說,這恐怕是JavaScript中最難以理解的地方。是啊,幾乎任何講面向對象的書中,第一個要講的就是“類”的概念,這可是面向對象的支柱。這突然沒有了“類”,我們就象一下子沒了精神支柱,感到六神無主。看來,要放下對象和類,達到“對象本無根,類型亦無形”的境界確實是件不容易的事情啊。

    這樣,我們先來看一段JavaScript程序: 
    
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
這段JavaScript程序一開始產生了一個生命對象life,life誕生時只是一個光溜溜的對象,沒有任何屬性和方法。在第一次生命過程中,它有了一個身體屬性body,并有了一個say方法,看起來是一個“卵細胞”。在第二次生命過程中,它又長出了“尾巴”和“腮”,有了tail和gill屬性,顯然它是一個“蝌蚪”。在第三次生命過程中,它的tail和gill屬性消失了,但又長出了“四條腿”和“肺”,有了legs和lung屬性,從而最終變成了“青蛙”。如果,你的想像力豐富的話,或許還能讓它變成英俊的“王子”,娶個美麗的“公主”什么的。不過,在看完這段程序之后,請你思考一個問題:

    我們一定需要類嗎?

    還記得兒時那個“小蝌蚪找媽媽”的童話嗎?也許就在昨天晚,你的孩子剛好是在這個美麗的童話中進入夢鄉的吧。可愛的小蝌蚪也就是在其自身類型不斷演化過程中,逐漸變成了和媽媽一樣的“類”,從而找到了自己的媽媽。這個童話故事中蘊含的編程哲理就是:對象的“類”是從無到有,又不斷演化,最終又消失于無形之中的...

    “類”,的確可以幫助我們理解復雜的現實世界,這紛亂的現實世界也的確需要進行分類。但如果我們的思想被“類”束縛住了,“類”也就變成了“累”。想象一下,如果一個生命對象開始的時就被規定了固定的“類”,那么它還能演化嗎?蝌蚪還能變成青蛙嗎?還可以給孩子們講小蝌蚪找媽媽的故事嗎?

    所以,JavaScript中沒有“類”,類已化于無形,與對象融為一體。正是由于放下了“類”這個概念,JavaScript的對象才有了其他編程語言所沒有的活力。

    如果,此時你的內心深處開始有所感悟,那么你已經逐漸開始理解JavaScript的禪機了。

函數的魔力

    接下來,我們再討論一下JavaScript函數的魔力吧。

    JavaScript的代碼就只有function一種形式,function就是函數的類型。也許其他編程語言還有procedure或 method等代碼概念,但在JavaScript里只有function一種形式。當我們寫下一個函數的時候,只不過是建立了一個function類型的實體而已。請看下面的程序: 

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
  這個代碼運行之后可以看到typeof(myfunc)返回的是function。以上的函數寫法我們稱之為“定義式”的,如果我們將其改寫成下面的“變量式”的,就更容易理解了: 

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
    這里明確定義了一個變量myfunc,它的初始值被賦予了一個function的實體。因此,typeof(myfunc)返回的也是function。其實,這兩種函數的寫法是等價的,除了一點細微差別,其內部實現完全相同。也就是說,我們寫的這些JavaScript函數只是一個命了名的變量而已,其變量類型即為function,變量的值就是我們編寫的函數代碼體。

    聰明的你或許立即會進一步的追問:既然函數只是變量,那么變量就可以被隨意賦值并用到任意地方 主站蜘蛛池模板: 深爱婷婷网 | 精品国产96亚洲一区二区三区 | 综合影院 | 国产91精品高跟丝袜在线 | 亚洲妇人成熟性成熟美女 | www.一区二区三区.com | 国内精品视频一区二区三区 | 成人免费大片a毛片 | 久久99国产精品亚洲 | 欧美午夜在线 | 丁香婷婷亚洲 | 99久久网站 | 精品成人一区二区 | 中国一级特黄真人毛片免 | 久久综合中文字幕一区二区三区 | 久久精品国产亚洲a不卡 | 日本高清www视频在线观看 | 91精品一区二区综合在线 | 男人精品一线视频在线观看 | 伊人久久大香线蕉综合爱婷婷 | 日韩精品一区二区三区在线观看 | 一色屋色费精品视频在线观看 | 国产美女激情视频无打码 | 一二三四视频社区在线播放中国 | 国产福利小视频 | 亚洲国产成人精品91久久久 | 精品网址 | 色哟在线| 国产一区二三区 | 日韩精品一区二区三区视频网 | 国产亚洲精品午夜高清影院 | 亚洲国产午夜 | 欧美视频在线看 | 视频一区二区不卡 | 国产日产欧产精品推荐推荐 | 99在线在线视频免费视频观看 | 国产高清精品入口麻豆 | 最新国产精品亚洲二区 | 中文国产成人精品久久水 | 久久国产麻豆 | 碰91精品国产91久久婷婷 |