Time of Update: 2017-01-19
而JavaScript的核心是ECMAScript 。與其他語言類似,ECMAScript 的字串是不可變的,即它們的值不能改變。請考慮下面的代碼:複製代碼 代碼如下:var str = "hello ";str += "world";實際上,這段代碼在幕後執行的步驟如下:1.建立儲存 "hello " 的字串。2.建立儲存 "world" 的字串。3.建立儲存串連結果的字串。4.把 str 的當前內容複寫到結果中。5.把 "world" 複製到結果中。6.更新
Time of Update: 2017-01-19
for迴圈:複製代碼 代碼如下:for(i=start; i<end; i++) {}while迴圈: (注意, 若條件一直為真, 則會進入死迴圈, 瀏覽器就hang掉)複製代碼 代碼如下:while (condition) { //do something; //change condition;}遞迴:使用for迴圈做substring複製代碼 代碼如下:function
Time of Update: 2017-01-19
演算法的核心是部分匹配表和回退演算法,部分匹配表的實現如下:複製代碼 代碼如下:function kmpGetStrPartMatchValue(str) { var prefix = []; var suffix = []; var partMatch = []; for(var i=0,j=str.length;i<j;i++){ &
Time of Update: 2017-01-19
一、在HTML中嵌入Javasript的方法1.直接在Javascript代碼放在標記對<script>和</script>之間2.由<script />標記的src屬性制定外部的js檔案3.放在事件處理常式中,比如:<p onclick="alert('我是由onclick事件執行的Javascript')">點擊我</p>4.作為URL的主體,這個URL使用特殊的Javascript:協議,比如:<a
Time of Update: 2017-01-19
Javascript並不像Java、C#等語言那樣支援真正的類。但是在js中可以定義偽類。做到這一點的工具就是建構函式和原型對象。首先介紹js中的建構函式。Javascript中建立對象的文法是在new運算子的後面跟著一個函數的調用。如複製代碼 代碼如下: var obj = new Object(); var date = new Date();運算子new首先建立一個新的沒有任何屬性的對象,然後調用該函數,把新的對象作為this關鍵字的值傳遞。var date =
Time of Update: 2017-01-19
眾所周知PHP中對時間類型資料可以直接轉換為時間戳記,那麼在前端指令碼js中,也有方法可以實現,就是valueOf()例如,我們可以通過這段代碼輸出目前時間點的時間戳記複製代碼 代碼如下:<script type="text/javascript"> document.write(new Date().valueOf());</script>那麼何為時間戳記呢?時間戳記就是從1970年1月1日0時0分0秒到目前時間點的所有秒數。1970.1.1 0:0:0
Time of Update: 2017-01-19
setAttribute(string name, string value):增加一個指定名稱和值的新屬性,或者把一個現有的屬性設定為指定的值。1、樣式問題setAttribute("class", value)中class是指改變"class"這個屬性,所以要帶引號。vName代表對樣式賦值。例如:複製代碼 代碼如下:var input = document.createElement("input");input.setAttribute("type",
Time of Update: 2017-01-19
打造JavaScript命名空間其實很簡單,只需要將自己的函數、對象、變數等放在一個偽命名空間中,即用一個匿名函數封裝起來。 複製代碼 代碼如下:(function(){ function $(id){ return document.getElementById(id); }
Time of Update: 2017-01-19
按照ECMA262第五版中的解釋,JSON是一個提供了stringify和parse方法的內建對象,前者用於將js對象轉化為符合json標準的字串,後者將符合json標準的字串轉化為js對象。json標準參考<a href="http://json.org/" target="_blank">json.org</a>。(其實將符合json標準的字串轉化為js對象可以用eval,但是eval效能相對差且存在安全隱患(會執行json字串中的代碼),本文僅寫JSON)
Time of Update: 2017-01-19
如果對範圍,函數為獨立的對象這樣的基本概念理解較好的話,理解閉包的概念並在實際的編程實踐中應用則頗有水到渠成之感。在DOM的事件處理方面,大多數程式員甚至自己已經在使用閉包了而不自知,在這種情況下,對於瀏覽器中內嵌的JavaScript引擎的bug可能造成記憶體流失這一問題姑且不論,就是程式員自己調試也常常會一頭霧水。用簡單的語句來描述JavaScript中的閉包的概念:由於JavaScript中,函數是對象,對象是屬性的集合,而屬性的值又可以是對象,則在函數內定義函數成為理所當然,如果在函數f
Time of Update: 2017-01-19
之前看到網易還是新浪還是什麼什麼網站來著,也是用類似這種東西的,當時對js只是九牛一毛的水平,當場被嚇傻了。但這次,我打算親自分析下,以後在看到就不會迷茫了。複製代碼 代碼如下://調用例子:bradio.namespace("bradio.lang.array"); //下面是百度編譯後的源碼,變數都是a,b,c,d...之後我會重新寫一個規範點的。 //好了,開始分析 bradio.namespace = function () { //建立命名空間
Time of Update: 2017-01-19
本文執行個體講述了JavaScript文法高亮庫highlight.js用法。分享給大家供大家參考,具體如下:highlight.js是一款基於JavaScript的文法高亮庫,目前支援125種程式設計語言,有63種可供選擇的樣式,而且能夠做到語言自動識別,和目前主流的JS架構都能相容,可以混合使用。這款高亮庫可以用在部落格系統中,其使用方法及其簡單,幾乎不需要任何學習成本,下面介紹highlight.js的使用。1.擷取highlight.js庫,使用者可以從官網擷取:地址:https://h
Time of Update: 2017-01-19
Email:longsu2010 at yeah dot net js String的replace函數的函數簽名如下: replace(match/* 字串ORRegex */, replacement/* 字串OR函數 */) 作用是將源自符串中的match替換為replacement並返回替換後的字串。 如果第一參數是字串就沒什麼好說的了,但是要記住此時只在源自符串替換一次match(第一次)函數就執行完成了。所以第一參數通常是一個Regex,舉例如下: replace(/a/g, "b"
Time of Update: 2017-01-19
傳統方式 element.onclick = function(e){ // ... }; 1. 傳統綁定的優點非常簡單和穩定,可以確保它在你使用的不同瀏覽器中運作一致處理事件時,this關鍵字引用的是當前元素,這很有幫組2. 傳統綁定的缺點 傳統方法只會在事件冒泡中運行,而非捕獲和冒泡一個元素一次只能綁定一個事件處理函數。新綁定的事件處理函數會覆蓋舊的事件處理函數事件對象參數(e)僅非IE瀏覽器可用W3C方式
Time of Update: 2017-01-19
什麼是跨域JavaScript出於安全方面的考慮,不允許跨域調用其他頁面的對象。但在安全限制的同時也給注入iframe或是ajax應用上帶來了不少麻煩。這裡把涉及到跨域的一些問題簡單地整理一下:首先什麼是跨域,簡單地理解就是因為JavaScript同源策略的限制,a.com 網域名稱下的js無法操作b.com或是c.a.com網域名稱下的對象。更詳細的說明可以看下錶: URL 說明 是否允許通訊
Time of Update: 2017-01-19
原生javascript代碼寫的2048遊戲。建議在Google瀏覽器下跑。2048.html 複製代碼 代碼如下:<!DOCTYPE><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>2048</title><link
Time of Update: 2017-01-19
本文執行個體總結了javascript設定文字框游標的方法。分享給大家供大家參考,具體如下:對於text//得到游標位置function getCaret(textbox) { var control = document.activeElement; textbox.focus(); var rang = document.selection.createRange(); rang.setEndPoint("StartToStart",textbox.createTextRange()
Time of Update: 2017-01-19
之前看到有人分析12306背景邏輯。。火車票的預定和退訂不同於普通的購物。一個難題就是火車票可以分站來賣。比如,一張北京到上海的火車票,沿途可以有很多站,可以北京-濟南,濟南-南京...等等。如何設計資料模型來存取這些票是一個問題。而不是簡單的數量+-1.其中看到一條思路挺好:用二進位字串來表示一張火車票,比如,北京到上海共10站,那麼一張全程票初始狀態表示為:'1111111111';賣出一張全程票,則該票變為'0000000000';賣出一張半程票,比如北京-濟南三站(第一站-第三站),則票
Time of Update: 2017-01-19
1、數組的建立複製代碼 代碼如下:var arrayObj = new Array(); //建立一個數組var arrayObj = new Array([size]); //建立一個數組並指定長度,注意不是上限,是長度var arrayObj = new Array([element0[, element1[, ...[,
Time of Update: 2017-01-19
一、數組的操作1、數組的建立複製代碼 代碼如下:var arrayObj = new Array(); //建立一個數組var arrayObj = new Array([size]); //建立一個數組並指定長度,注意不是上限,是長度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]);//建立一個數組並賦值要說明的是,雖然第二種方法建立數組指定了長度,但實際上所有情況下數組都是變長的,也就是說即使指定了長度為5