原创 javascript執行上下文、作用域與閉包(第三篇)---自由變量與作用域鏈

首先解釋一下,什麼是自由變量。 在A作用域中使用的變量x,卻沒有在A作用域中聲明(即在其他作用域中聲明的),對於A作用域來說,x就是一個自由變量。簡單的說,凡是跨了自己的作用域的變量都叫自由變量。如: var x=10; func

原创 javascript執行上下文、作用域與閉包(第一篇)---執行上下文

在這個系列文章裏,我首先要說的是,閉包是和執行上下文,作用域是有緊密的聯繫的,不能單獨的去理解閉包,否則就容易走入死衚衕。 這篇講執行上下文。 一、什麼是執行上下文 我們可以將執行上下文看作代碼當前運行的環境。代碼的運行環境分爲三

原创 javascript執行上下文、作用域與閉包(第四篇)---作用域與執行上下文

上一篇我們講了作用域,也留了一個問題,我們是真的在作用域裏取到變量的值嗎? 在上一篇裏也給出了答案,我們不是在作用域裏取到變量的值,而是在作用域所對應的執行上下文取到變量的值,並且可能同樣的作用域,相同的變量取到的值是不同的。 在

原创 javascript執行上下文、作用域與閉包(第五篇)---一個例子的理解

在上一篇裏,留下了一個例子,如果對那個例子不是太懂,沒關係,我會在這一篇裏詳細講一下我對這個例子的理解。 下面是這個例子: function a(){ var age=21; var height=178; var weight=

原创 javascript事件處理--關於事件的一些基礎定義

當web瀏覽器加載完文檔,用戶把鼠標指針移到超鏈接上或者敲擊鍵盤時,web瀏覽器都會產生事件。 請注意,事件本身不是一個需要定義的技術名詞。簡而言之,事件就是web瀏覽器通知應用程序發生了什麼事情。事件不是javascript對象

原创 全面解析javascript事件流模型以及各事件流模型在瀏覽器中的兼容性情況

首先,講一下爲什麼會有事件流模型。舉個簡單的例子來說,當你看着紙上一組同心圓的時候,你拿着筆點着同心圓裏最小的那個圓的時候,是不是也可以說你也在點着這組同心圓的所有圓?顯然是可以說的。 所以,當你點擊頁面上的一個button,你是

原创 javascript執行上下文、作用域與閉包(第二篇)---作用域

首先,提到作用域,要了解一個常識: javascript中沒有塊級作用域,只有函數作用域和全局作用域。 什麼是塊級作用域?塊級作用域就是定義在{}之內的範圍,比如if(){}或者for(){}裏那個{}裏的範圍就叫做塊級作用域

原创 深入淺出ArrayDeque的設計和實現

說在前面,本篇文章不適合小白,需要先了解循環隊列的數組實現。 一、避輕就重,抓住核心 ArrayDeque容器類可能大家平時用得很少,但是其代碼的設計和實現真比我們平常經常用的ArrayList,Stack(Vector)要深刻的

原创 javascript原型繼承(第五篇)---幾種繼承方式的優缺點

在講幾種繼承方式的優缺點之前,先給大家介紹一下在javascript中對各種屬性的分類 在javascript中,數據分爲簡單數據和複雜數據,簡單數據在對象裏稱爲基本屬性,而數組,函數在對象裏稱爲引用屬性(數組,函數其實都是對象

原创 javascript 原型繼承(第四篇)---幾種繼承方式

今天要介紹的是,對象之間的”繼承”的幾種方式。 首先有一個問題,爲什麼繼承還有幾種方式呢?你看不管是java還是C++,繼承就是繼承,哪有幾種繼承方式,不過Javascript 是一種靈活的語言,之所以靈活,說不好聽點就是設計得太

原创 javascript原型繼承(第二篇)---繼承的設計思想

最初接觸javascript,讓我有一種感覺——javascript 原型繼承到底講的是什麼? 看了很多關於Javascript原型繼承的資料,仍舊弄不懂它要講什麼,不過今天在看了一篇博客後,頓時讓我有種醍醐灌頂的感覺,下面就將這

原创 javascript回調函數

首先,我要告訴大家,回調函數不復雜。 然後,我再告訴大家,回調函數是一個簡單的概念。 A callback is a function that is passed as an argument to another func

原创 javascript原型繼承(第三篇)---prototype

Javascript是一種基於對象(object-based)的語言,你遇到的所有東西幾乎都是對象。但是,它又不是一種真正的面向對象編程(OOP)語言,因爲它的語法中沒有class(類)。 那麼,如果我們要把”屬性”(proper

原创 javascript執行上下文、作用域與閉包(第六篇)---閉包

終於講到閉包了,當你在百度上搜索閉包時,你會被搜索出來的結果嚇一跳,我的天,爲什麼說得都不一樣?直到把所有的解釋都看過了,我就只想說一句,到底誰說的是對的… 在這麼多的不同解釋裏,我認真思考了很久,到底該相信誰?最後我選擇相信大道

原创 javascript執行上下文、作用域與閉包(第七篇)---關於閉包典型例子的理解

在上一篇裏,我留下了一個例子,如果理解了這個例子,我覺得閉包對你已經不是問題了。 這個例子如下: function A(){ var count=0; function B(){ count++;