Time of Update: 2017-02-28
當我們用js請求RESTful Web Service的時候,通常會出現跨域無法訪問的問題,也就是無法正常得到我們要的值。jsonp是個解決問題的方法。但是,我們希望訪問RESTful Web Service就像一般的ajax方法一樣,不用每個都去搞一個jsonp和callback。這就需要我們在服務端進行一些設定,下面我用一個簡單的 Filter來進行說明,其他比較複雜的情況根據自己的需求進行改動。import java.io.IOException;import
Time of Update: 2017-02-28
狀態機器什麼叫狀態機器(Finite State
Time of Update: 2017-02-28
在JavaScripot函數閉包的定義中,一般都有一個outer 函數,一個inner函數。那麼“閉包”到底是指outer函數呢,還是指inner函數?從官方定義來看,並不清楚:A closure is a combination of a code block and data of a context in which this code block
Time of Update: 2017-02-28
我的上篇部落格標題不對,造成一些誤解。我認為部落格的宗旨不是背教科書,而是分享研發心得。我的上篇標題因該改成“JavaScript 閉包的一個議題:它對outer scope 的影響”,因為我沒有嚴格地去分析閉包的定義,而是分析了實現閉包的其中一個語義問題。講清楚閉包是件麻煩事,我也沒有看到什麼關於JavaScript的權威性著作(比如像C++語言有 Bjarne Stroustrup的C++ programming
Time of Update: 2017-02-28
prototype模式通過執行個體對象指定需要建立的類型,這與factory method模式有本質不同,factory method模式是通過類的繼承定義不同子類來達到建立不同類型對象的目的,屬於類模式,prototype模式通過調用組合的對象成員產生不同類型的對象執行個體,屬於對象模式。由於這個特性,prototype具有以下適用場合:· 需要運行時確定執行個體化的類時,比如動態裝載庫時· 避免建立過多子類時。子類太多永遠是不受歡迎的,在factory
Time of Update: 2017-02-28
什麼是「超大整數」?JavaScript 採用 IEEE754標準 中的浮點數演算法來表示數字 Number。我也沒花時間去詳細瞭解 IEEE754標準 ,但對於處理超大整數,瞭解下面的幾個知識點就足夠了。首先,JavaScript 實際上可以表示的最大數是: 1.7976931348623157e+308Number.MAX_VALUE; //
Time of Update: 2017-02-28
闊別1年半之久,一個JavaScript和ios通訊的想法終於被實現了(我不知道別人有沒有早就實現過~)。 記得早期ios內嵌html做通訊時,貌似做好的辦法只能是 ios通過url來截取頁面發送訊息,但是這樣一來如果頁面架構對url的依賴比較高那麼就會出問題,並且頻繁改url,ios可能並不能攔截到每次的url。 一個老外寫了一套利用該方法實現的js與ios通訊的庫,原理基本還是如此。不過貌似做了最佳化,url的變換不在webview裡,而是再後端
Time of Update: 2017-02-28
方式一、使用取餘運算子判斷任何整數都會被1整除,即餘數是0。利用這個規則來判斷是否是整數。function isInteger(obj) { return obj%1 === 0}isInteger(3) // trueisInteger(3.3) // false 以上輸出可以看出這個函數挺好用,但對於字串和某些特殊值顯得力不從心isInteger('') // trueisInteger('3') // trueisInteger(true) //
Time of Update: 2017-02-28
隨著網站逐漸層成"互連網應用程式",嵌入網頁的Javascript代碼越來越龐大,越來越複雜。網頁越來越像傳統型程式,需要一個團隊分工協作、進度管理、單元測試等等......開發人員不得不使用軟體工程的方法,管理網頁的商務邏輯。Javascript模組化編程,已經成為一個迫切的需求。理想情況下,開發人員只需要實現核心的商務邏輯,其他都可以載入別人已經寫好的模組。但是,Javascript不是一種模組化程式設計語言,它不支援"類"(class),更遑論&qu
Time of Update: 2017-02-28
今天介紹如何規範地使用模組。(接上文)七、模組的規範先想一想,為什麼模組很重要?因為有了模組,我們就可以更方便地使用別人的代碼,想要什麼功能,就載入什麼模組。但是,這樣做有一個前提,那就是大家必須以同樣的方式編寫模組,否則你有你的寫法,我有我的寫法,豈不是亂了套!考慮到Javascript模組現在還沒有官方規範,這一點就更重要了。目前,通行的Javascript模組規範共有兩種:CommonJS和AMD。我主要介紹AMD,但是要先從CommonJS講起。八、CommonJS2009年,美國程式員
Time of Update: 2017-02-28
今天介紹如何將它們用於實戰。我採用的是一個非常流行的庫require.js。一、為什麼要用require.js?最早的時候,所有Javascript代碼都寫在一個檔案裡面,只要載入這一個檔案就夠了。後來,代碼越來越多,一個檔案不夠了,必須分成多個檔案,依次載入。下面的網頁代碼,相信很多人都見過。 <script src="1.js"></script><script src="2.js"></script>
Time of Update: 2017-02-28
你可能知道,Javascript語言的執行環境是"單線程"(single thread)。所謂"單線程",就是指一次只能完成一件任務。如果有多個任務,就必須排隊,前面一個任務完成,再執行後面一個任務,以此類推。這種模式的好處是實現起來比較簡單,執行環境相對單純;壞處是只要有一個任務耗時很長,後面的任務都必須排隊等著,會拖延整個程式的執行。常見的瀏
Time of Update: 2017-02-28
JavaScript的"並行存取模型"是基於事件迴圈的.這個並行存取模型有別與Java的多線程,javascript的並發是單線程的.我簡單的畫了一個 javascript 的執行圖,我們通過圖,逐步分析.棧函數調用時所用的執行環境棧當 js方法被調用時,會進入一個執行環境(execution context),如果有另外一個方法被調用了(或者自身遞迴調用),會建立一個新的執行環境,並且代碼的執行會進入到這個新的執行環境.函數調用返回的 時候重新回到原來的執行環境. 由此,
Time of Update: 2017-02-28
在談javascript的淺複製和深複製之前,我們有必要在來討論下js的資料類型。我們都知道有 Number,Boolean,String,Null,Undefined,Object五種類型。而Object又包含Function,Array 和Object自身。前面的五種類型叫做基本類型,而Object是參考型別。可能有人就要問,為什麼要分基本類型和參考型別呢?後面你就會明白的。
Time of Update: 2017-02-28
對於JavaScript的繼承和原型鏈,雖然之前自己看了書也聽了session,但還是一直覺得雲裡霧裡,不禁感歎JavaScript真是一門神奇的語言。這次經過Sponsor的一對一輔導和自己回來後反覆思考,總算覺得把其中的精妙領悟一二了。1. JavaScript建立對象在物件導向語言中,通常通過定義類然後再進行執行個體化來建立多個具有相同屬性和方法的對象。但是在JavaScript中並沒有類的概念,不過
Time of Update: 2017-02-28
字串是javascript編程中不可或缺的元素,掌握字串常用的方法也是我們學習過程中的必經之路,下面我們總結一些最常用的的字串方法。string.charAt(postion)charAt方法返回在string中的position位置處的字元。如果position小於0或者大於字串的長度,返回Null 字元串。由於js沒有字元類型,返回的仍為一個字串 var name="deng"; var a=name.charAt(1);
Time of Update: 2017-02-28
在javascript的基礎編程中,數組是我們最常遇到的,那麼數組的一些常用方法也是我們必須要掌握的,下面我們總結一下數組中常用的方法。toString()和valueOf()方法toString()方法,就是將數組拼接成字串返回,預設情況下以逗號分隔。valueOf返回數組本身。1var a=["a3","bs","c1","d鄧"]; 2var c=a.toString(); 3var
Time of Update: 2017-02-28
事件代理(Event Delegation),又稱之為事件委託。是 JavaScript 中常用綁定事件的常用技巧。顧名思義,“事件代理”即是把原本需要綁定的事件委託給父元素,讓父元素擔當事件監聽的職務。 為什麼要這樣做呢?眾所周知,DOM操作是十分消耗效能的。所以重複的事件綁定簡直是效能殺手。而事件代理的核心思想,就是通過盡量少的綁定,去監聽盡量多的事件。 下面將會用 Zepto
Time of Update: 2017-02-28
頁面裡的img元素,想要擷取它的原始大小,以寬度為例可能首先想到的就是width,如下<img src=http://www.update8.com/Web/Javascript/"http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg"><script> var img =
Time of Update: 2017-02-28
有時需要擷取圖片的尺寸,這需要在圖片載入完成以後才可以。有三種方式實現,下面一一介紹。 一、load事件 <!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title>img - load event</title></head&