Time of Update: 2017-01-19
前言 在第12章關於變數對象的描述中,我們已經知道一個執行內容 的資料(變數、函式宣告和函數的形參)作為屬性儲存區在變數對象中。 同時我們也知道變數對象在每次進入上下文時建立,並填入初始值,值的更新出現在代碼執行階段。 這一章專門討論與執行內容直接相關的更多細節,這次我們將提及一個議題——範圍鏈。 英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-4-scope-chain/ 中文參考:http://www.denisdeng.com/?p=9
Time of Update: 2017-01-19
前言 當前,在軟體開發中單元測試越來越受到開發人員的重視,它能提高軟體的開發效率,而且能保障開發的品質。以往,單元測試往往多見於服務端的開發中,但隨著Web編程領域的分工逐漸明細,在前端Javascript開發領域中,也可以進行相關的單元測試,以保障前端開發的品質。 在伺服器端的單元測試中,都有各種各樣的測試架構,在JavaScript中現在也有一些很優秀的架構,但在本文中,我們將自己動手一步步來實現一個簡單的單元測試架構。
Time of Update: 2017-01-19
早上看到《JavaScript 每周導讀》【第三期】一文,裡面發現一篇文章(Extending JavaScript – The Right Way),覺得還不錯,翻譯過來跟大家共用,本文並不是逐字逐句進行翻譯,盡量說得通俗易懂。原文地址:Extending JavaScript – The Right Way以下是譯文 JavaScript已經內建了很多強大的方法,但有時你需要的某個功能在內建的方法中沒有,我們怎麼來優雅地擴充JavaScript功能呢。
Time of Update: 2017-01-19
JS中範圍的概念: 表示變數或函數起作用的地區,指代了它們在什麼樣的上下文中執行,亦即上下文執行環境。Javascript的範圍只有兩種:全域範圍和本地範圍,本地範圍是按照函數來區分的。 首先來看幾道題目: 1. 複製代碼 代碼如下: if(true){ var aa= "bb"; } console.log(aa); //bb for(var i = 0; i < 100; i++){ //do } console.log(i); //100 2. 複製代碼 代碼如下: var
Time of Update: 2017-01-19
一、javascript中的閉包 1、我們一起先來理解什麼是函數的範圍。 2、調用的對象結合例子:複製代碼 代碼如下: function display(something) { function executeDisplay1() { document.write("我在幫老闆列印:"+something+"<br />");//引用外部函數的something參數 } executeDisplay1();//函數display引用了內建函式 } display("sorry");
Time of Update: 2017-01-19
如題,只有思路,沒有代碼。 這個思路是最近寫XScroll.js類的時候想明白的。平常我們說的淡入淡出效果,一般分成兩部分,一半是淡入,另一半就是淡出了。不過經過分析,我覺得其實只需要一半就行了。 比如寫一個圖片切換類,轉場效果是淡入淡出,通常我們會這樣寫:當切換髮生的時候,當前顯示的圖片淡出(漸漸隱藏),將要顯示的圖片淡入(漸漸出現),通常兩張圖片的動畫速度是一致的,以便實現當前圖片完全隱藏之時就是下一張圖片完全顯示之日。 我們來列一個簡單的步驟:
Time of Update: 2017-01-19
判斷嘛,就是面臨2個或以上的選項時進行選擇。比如我家門前去公司有一個岔路,只要我第一次知道了哪一條路是對的,那我下一次或以後的每次都不用再思考了,直接走那條路即可——當然,突發天災時不算。 做出判斷是需要時間的,是需要對應條件的。正確的判斷很好,但每次面臨岔路,哪怕是走了無數次的岔路,都來進行一下判斷,無疑是一種腦殘行為。 下面來看一個我們平時經常看到的JS函數,他的作用是判斷瀏覽器類型然後設定對應的透明度屬性: 複製代碼 代碼如下: function setAlpha(obj,alpha){
Time of Update: 2017-01-19
匿名函數,就是沒有名字的函數。如: 複製代碼 代碼如下: function (){ alert('a function'); } 但是,上面的代碼會報錯。firebug提示:function statement requires a name,也就是:函數必須要有個名字。 奇怪的是,如果我用一對()把這個沒有名字的函數包起來,就不會報錯了。如: 複製代碼 代碼如下: (function (){ alert('a function'); })
Time of Update: 2017-01-19
如下圖所示: 原始碼如下: 複製代碼 代碼如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title>
Time of Update: 2017-01-19
console.log 原先是 Firefox 的“專利”,嚴格說是安裝了 Firebugs 之後的 Firefox 所專屬的調試“絕招”。 這一招,IE8 學會了,不過用起來比 Firebugs 麻煩,只有在開啟調試視窗(F12)的時候,console.log 才能出結果,不然就報錯。 今天看到 Opera 也有個叫 dragonfly 的東東,用這東西查看 DOM,已經可以和 Firebug 媲美,然而還是不能用 console.log。於是有人就提供了這樣兩句代碼:複製代碼 代碼如下:
Time of Update: 2017-01-19
很多人一提到JS可能就會想到網頁,其實JS同樣可以擁有主動權,做一些其他語言能做到的事情,甚至可以反過來去主宰瀏覽器,而不是被瀏覽器主宰著。 這篇文章將介紹一個建立在WSH平台上,通過JS實現的真正可用的Windows工作管理員。 一:代碼及注釋 複製代碼 代碼如下: /* JS工作管理員 By:X!ao_f Mail:Xiao_f.mail@163.com QQ:120000512 */ //建立對象Shell對象,該對象提供了彈出提示框、運行進程、操作註冊表等準系統。 var shell =
Time of Update: 2017-01-19
核心代碼: 複製代碼 代碼如下: function quickSort(arr){ //如果數組只有一個數,就直接返回; if(arr.length<1){ return arr; } //找到中間的那個數的索引值;如果是浮點數,就向下取整 var centerIndex = Math.floor(arr.length/2); //根據這個中間的數的索引值,找到這個數的值; var centerNum = arr.splice(centerIndex,1); //存放左邊的數 var
Time of Update: 2017-01-19
前兩個唯一的差別就是迴圈和判斷的順序不同,do-while比while多迴圈一次,我就不舉例了。 for迴圈相信大家也熟的不能再熟了,我們就看for-in這一句。 這個其實是針對數組的,js中數組的初始化也挺奇特的比如我們在script結點裡寫:(另外注意下數組的初始化,用的是中括弧) [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行] for in執行個體二 [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行] javascrpt for
Time of Update: 2017-01-19
首先我們看看數組的分類: 從數組的下標分為索引數組、關聯陣列 複製代碼 代碼如下: /* 索引數組,即通常情況下所說的數組 */ var ary1 = [1,3,5,8]; //按索引去取數組元素,從0開始(當然某些語言實現從1開始),索引實際上就是序數,一個整型數字 ary1[0]; ary1[1]; ary1[2]; ary1[3]; /* 關聯陣列,指以非序數類型為下標來存取的數組 python中稱為字典 */ var ary2 = {}; //存取時,以非序數(數字),這裡是字串
Time of Update: 2017-01-19
本版本就是改回v6的形態,後端資料還是帶@前端才方便查看與調試。昨天也與一TX前端工程師討論過這個必要性。取得模板中的需要填寫的變數,再與後端傳過來的JSON進行比較,儘早進行資料驗證。這種技術,可以看一看PHP的變數命名就知了,帶是帶$首碼。 在之前的版本中,如果輸出語句帶分號或逗號是會報錯的 複製代碼 代碼如下: <script type="tmpl" id="table_tmpl"> <table> <& for(var i=0,tl =
Time of Update: 2017-01-19
由於最近一直在看javascript,下面簡要說一下它們三個在javascript的一些用法 break語句: break語句會使啟動並執行程式立刻退出包含在最內層的迴圈或者退出一個switch語句。由於它是用來退出迴圈或者switch語句,所以只有當它出現在這些語句時,這種形式的break語句才是合法的。 如果一個迴圈的終止條件非常複雜,那麼使用break語句來實現某些條件比用一個迴圈運算式來表達所有的條件容易得多。 [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
Time of Update: 2017-01-19
1.路徑符號的含義 src="/js/jquery.js"、"../"這個斜杠是絕對路徑的意思,表示的是網站根目錄. 其他的如"./ " 、 "../" 、 "jquery.js" 、 "js/jquery.js"等等表示的都是相對當前網頁的路徑,是相對路徑。 2.擷取網站的根目錄 複製代碼 代碼如下: function GetRootPath() { var strFullPath = window.document.location.href; var strPath =
Time of Update: 2017-01-19
確保代碼盡量簡潔
Time of Update: 2017-01-19
複製代碼 代碼如下: (function() { var t = window.setInterval(function() { $('#ajaxGame').load('RefreshCurrentPlayerServlet #ajaxGame', function() { youWin(); youlose(); }); }, 10000); function youWin() { if ($('#status:contains("YOU ARE THE
Time of Update: 2017-01-19
前言 JsRender是一款基於jQuery的JavaScript模版引擎,它具有如下特點: · 簡單直觀 ·