最近重構東西,碰到命名空間的設定,搜了一些知識,請教了一些高手,把自己的心得寫下來相信大家都知道,window是頂級的,這裡就不寫window了,先忽略1:關於頂級複製代碼 代碼如下:var ns = ns || {};可以看到,其實就是如果發現沒有這個對象,就自動建立new Object();如果有,就直接使用這個對象,這樣就不會覆蓋。2: 第二級,當然也可以在頂級的ns下建立第二級,即複製代碼 代碼如下:ns.ModuleClass =
洗牌演算法是我們常見的隨機問題,在玩遊戲、隨機排序時經常會碰到。它可以抽象成這樣:得到一個M以內的所有自然數的隨機順序數組。在百度搜“洗牌演算法”,第一個結果是《百度文庫-洗牌演算法》,掃了一下裡面的內容,很多內容都容易誤導別人走上歧途,包括最後用鏈表代替數組,也只是一個有限的最佳化(鏈表也引入了讀取效率的損失)。該文裡的第一種方法,可以簡單描述成:隨機抽牌,放在另一組;再次抽取,抽到空牌則重複抽。“抽到空牌則重複抽”這會導致後面抽到空牌的機會越來越大,顯然是不合理的。可以最佳化一步成:牌抽走後
見某網站的輸入框支援截屏粘貼的功能,覺得有點意思,於是將代碼扒出來分享下。可惜,目前僅有高版本的 Chrome 瀏覽器支援這樣直接粘貼,其他瀏覽器目前為止還無法粘貼( IE11沒測試過 ),當然這種增強型的使用者體驗功能有總比沒有好。輸入框的結構代碼:複製代碼 代碼如下:<input type="text" id="testInput" />為輸入框綁定粘貼事件:複製代碼 代碼如下:var input = document.getElementById( 'testInput' );
js擷取可見元素的尺寸還是比較方便的,這個可以直接使用這個方法:複製代碼 代碼如下:function getDefaultStyle(obj,attribute){ // 返回最終樣式函數,相容IE和DOM,設定參數:元素對象、樣式特性 return
高手繞道!這跟閉包本身沒什麼大的關係,也不知道怎麼取標題,隨便湊了個數,望見諒!今天一個剛學js的朋友給了我一段代碼問為什麼方法不執行,代碼如下:複製代碼 代碼如下:function makefunc(x) { return function (){ return x; }}alert(makefunc(0));其實不是不執行,只是朋友的意思這裡alert出來的應該是“0”,而不是function (){return
javascript是一門神奇的語言,這沒神奇的語言中有一個神奇的加操作符。常用的加操作符我們可以用來做:1.加法運算,例如:alert(1+2); ==>32.字串串連,例如:alert(“a”+”b”);==>”ab”進階一點的還有“+=”,也是做以上兩種操作的。昨天在javascript叢林群裡問了問題:怎麼把“2000-09-11 19:22”這個日期格式字串轉換成毫秒數?斬夢人天天馬上回答我: +new Date('2000-09-11
相對C/C++ 而言,我們所用的JavaScript 在記憶體這一方面的處理已經讓我們在開發中更注重商務邏輯的編寫。但是隨著業務的不斷複雜化,單頁面應用、移動HTML5 應用和Node.js 程式等等的發展,JavaScript 中的記憶體問題所導致的卡頓、記憶體溢出等現象也變得不再陌生。這篇文章將從JavaScript 的語言層面進行記憶體的使用和最佳化的探討。從大家熟悉或略有耳聞的方面,到大家大多數時候不會注意到的地方,我們一一進行剖析。1. 語言層面的記憶體管理1.1
坑”這個字,在此的意思是“陷阱”。由於 JavaScript “弱語言”的性質,使得其在使用過程中異常的寬鬆靈活,但也極為容易“中招”。這些坑往往隱藏著,所以必須擦亮雙眼,才能在學習與應用 JS 的道路上走的一帆風順。一、全域變數JavaScript 通過函數管理範圍。在函數內部聲明的變數只在這個函數內部,函數外面不可用。另一方面,全域變數就是在任何函數外面聲明的或是未聲明直接簡單使用的。“未聲明直接簡單使用”,指的是不用 var
切頁面時有時用連結A來替代按鈕,這樣做有幾個好處 滑鼠放上時預設有手狀效果(不用添加cursor:pointer) 可以添加低版本IE都支援的偽類 如果點擊時頁面要整體重新整理,即跳轉,這時IE6則不盡人意,如下 複製代碼 代碼如下: <p><a href="javascript:;" onclick="jumpSina()">Sina</a></p> <p><a href="javascript:void 0;"
Promise 編程模式也被稱為 thenable,可以理解為 延遲後執行。每個 Promise 都擁有一個叫做 then 的唯一介面,當 Promise 失敗或成功時,它就會進行回調。它代表了一種可能會長時間運行而且不一定必須完成的操作結果。這種模式不會阻塞和等待長時間的操作完成,而是返回一個代表了承諾的(promised)結果的對象。當前的許多 JavaScript 庫(如 jQuery 和 Dojo、AngularJS)均添加了這種稱為 Promise
一、什麼是 QUnitQUnit(http://qunitjs.com/) 是一個非常強大的javascript單元測試架構,可以幫你調試代碼。它是由 jQuery 團隊的成員寫的,而且是 jQuery 的官方測試套裝。但QUnit一般是足以測試任何常規 javascript 代碼,它甚至可能通過一些 javascript 引擎比如 Rhino 或 V8 來測試伺服器端 JavaScript。如果你不熟悉“單元測試”的概念,請不要擔心。這不是很難理解的:複製代碼
Javascript中的浮點數相乘是個很有意思的事情。浮點數相乘有很多方式,下面是我給出的一個我自己認為不錯的解決方案:複製代碼 代碼如下:function FxF(f1, f2) { f1 += ''; f2 += ''; var f1Len = f1.split('.')[1].length,
今天寫js的時候遇到了一個陷(da)阱(keng) 關於HTML/XML節點的問題 據說在IE中nextSibling不會返迴文本節點,而chrome或者firefox等會返迴文本節點…… 這個我的工作帶來了很嚴重的問題 在網上搜到了很多處理方法,都是給js添加各種封裝的函數…… 後來我發現有個nextElementSibling方法…… 這個不會返迴文本節點,不管是什麼瀏覽器…… 真是大坑
在 javascript 代碼中,因為各瀏覽器之間的行為的差異,我們經常會在函數中包含了大量的 if 語句,以檢查瀏覽器特性,解決不同瀏覽器的相容問題。 例如,我們最常見的為 dom-節點添加事件的函數: 複製代碼 代碼如下: function addEvent (type, element, fun) { if (element.addEventListener) { element.addEventListener(type, fun, false); } else
實現代碼:複製代碼 代碼如下:<script>function addFav(){ if(document.all){ window.external.addFavorite('http://jb51.net','FREE Web Directory'); }else if(window.sidebar){
Javascript擷取CSS屬性值方法:getComputedStyle和currentStyle 1 .對於元素的內聯CSS樣式(<div style="color:#369">hello</div>),可以直接使用element.style.color來直接擷取css屬性的值; 2.
在昨天的《Javascript權威指南》學習筆記之十:ECMAScript 5 增強物件模型一文中,對於一段代碼的調試出現了一個奇怪現象,現將原始碼貼在下面: 複製代碼 代碼如下: <script type="text/javascript"> function Person(){} var per = new Person; Object.defineProperties(per, { "nickName": { value:"Tom", writable:true },
複製代碼 代碼如下: var json = { jArray: [], jPush: function (c) { this.jArray.push(c); } } var examp = ["123", "~", "456"]; 使用ES5給出的forEach迴圈examp,並且將它們添加到json中的jArray中; 複製代碼 代碼如下: examp.forEach(json.jPush); 這個時候會報錯:
頁面裡的img元素,想要擷取它的原始大小,以寬度為例可能首先想到的就是width,如下 複製代碼 代碼如下: <img src="yun_qi_img/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg"> <script> var img = document.getElementsByTagName('img')[0] var width = getWH(img, 'width') // 690
有時需要擷取圖片的尺寸,這需要在圖片載入完成以後才可以。有三種方式實現,下面一一介紹。 一、load事件 複製代碼 代碼如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>img - load event</title> </head> <body> <img id="img1"