javascript進階篇——理解原型和範圍【連載中...】,javascript連載中
說明:
該教程繞開了javascript的一些基本的文法知識,直接講解javascript中最難理解的兩個部分,也是和其他主流物件導向語言區別最大的兩個部分——原型和範圍,當然,肯定少不了原型鏈和範圍鏈。幫你揭開javascript最神秘的面紗。
為什麼要偏偏要講這兩個知識點?
這是我在這麼多年學習javascript的經曆中,認為最難理解、最常犯錯的地方,學習這兩個知識點,會讓你對javascript有更深層次的理解,至少理解了原型和範圍,就不能再算是javascript菜鳥了。另外,這兩方面也是javascript與其他語言不同的地方,學習這樣的設計,有助於你開闊眼界,協助你瞭解程式設計語言的設計思路。畢竟,你不能只把眼睛盯在一門語言上。
閑話不多講,相信奔著這個話題來的朋友,也知道javascript原型和範圍的重要性。
最後說明:被系列教程我不是照搬的其他圖書或者網路資料,而是全憑著我對知識的理解而一步一步寫的。思路也是我一邊寫著一邊想的。有什麼不對的地方,歡迎指正。
目錄:
理解javascript原型和範圍系列(1)——一切都是對象
理解javascript原型和範圍系列(2)——函數和對象的關係
理解javascript原型和範圍系列(3)——prototype原型
理解javascript原型和範圍系列(4)——隱式原型
理解javascript原型和範圍系列(5)——instanceof
理解javascript原型和範圍系列(6)——繼承
理解javascript原型和範圍系列(7)——原型的靈活性
理解javascript原型和範圍系列(8)——簡述【執行內容】上
理解javascript原型和範圍系列(9)——簡述【執行內容】下
理解javascript原型和範圍系列(10)——this
理解javascript原型和範圍系列(11)——執行內容棧
待續……
我要深入的學習javascript運行機制的東西,比如閉包,原型鏈,範圍等,有什書推薦?
上面兩個權威指南和進階程式設計都可以看。
我推薦你周愛民寫的javascript語言精髓
javascript範圍鏈與原型鏈有聯絡?從原理上分析,不要說我網上找得到的
個人感覺,沒什麼聯絡。
一般來說,範圍鏈是針對變數的,js裡面大的範圍上來說,只有兩種範圍,全域範圍和函數內部範圍,如果函數1裡面又定義了函數2(一般都是匿名函數), 那麼就有了這麼一個範圍鏈全域範圍==>函數1範圍==>函數2範圍;特點是函數1裡面可以直接使用全域範圍的變數,函數2裡面可以直接使用全域範圍和函數1範圍的變數
原型鏈的話,一般是定義建構函式時用到,可以認為是針對建構函式的或者說針對建構函式對應的類的;原型鏈的頭部就是Object類/建構函式,如果有建構函式1.prototype = 建構函式2;那麼也就有這麼一個原型鏈; Object ==> 建構函式1 ==> 建構函式2,這樣的好處是建構函式2對應的類,可以擁有建構函式1 和Object中的屬性,js沒有對應繼承的關鍵字,所以用原型鏈來類比繼承的效果。
純手打,希望對你有協助