Time of Update: 2018-12-08
最近在寫一個javascript架構,看見網上有不少自動完成功能的表單,所以一時興起,用javascript寫了一個,為自己的架構增點色. 步驟: 1.傳入兩個參數,第一個是你要綁定的表單對象,第二個是你要檢索的數組. 2.動態建立一個div做為你要自動完成的層,設定屬性和事件(我在這裡並沒有設定div的visible和display屬性,而是將它的left設為"-1000px",這樣就移出了瀏覽器之外,達到了隱藏的效果.
Time of Update: 2018-12-08
1、原碼、反碼、補碼,正數減法轉補碼加法 js 在進行二進位運算時,使用 32 位二進位整數,由於 js 的整數都是有符號數,最高位0表示正數,1表示負數,因此,js 二進位運算中使用的整數表達範圍是 複製代碼 代碼如下:-Math.pow(2,31) ~ Math.pow(2,31)-1 // -2147483648 ~ 2147483647 原碼:最高位 0 表示正,1表示負,其餘 31 位是該數的絕對值(真值的絕對值)的二進位形式 反碼:正數反碼與原碼相同,負數反碼是原碼符號位不變,其餘3
Time of Update: 2018-12-08
每個函數建立時預設帶有一個prototype屬性,其中包含一個constructor屬性,和一個指向Object對象的隱藏屬性__proto__。constructor屬性的值為該函數的對象。在一個函數前面加上new來調用,則會建立一個隱藏串連到該函數prototype成員的新對象(由__proto__屬性來連結),同時函數的this將會被綁定到那個新對象上。 函數總是返回一個值;如果沒有指定傳回值,就返回undefined;如果當做建構函式來調用,且傳回值不是對象,則返回this(該新對象);
Time of Update: 2018-12-08
一個div的運動其實就是它與瀏覽器邊框的距離在變動。如果他變化的速率一定,那就是勻速運動;如果變化的速率不一定,那麼就是變速運動。當,變動率與聚離瀏覽器邊框的距離成比例的話,那麼就可以說是div在做緩衝運動。 其實,很簡單,就是用一個定時器(timer),每隔一段時間來改變div聚瀏覽器邊框的距離。 比如勻速運動: 進入定時器:(每隔30ms做) if(是否到達終點) { 停止定時器} else do{ 改變距離} 改變距離的方法決定是勻速還是變速(緩衝)運動。 勻速的比如: 複製代碼
Time of Update: 2018-12-08
Quiz1 Javascript真的需要類(Class)嗎? 我們首先先看下其他有類(Class)的物件導向語言(如:Java)的一些特性。 父類與子類 父類(Superclass)和子類(Subclass),並不是為瞭解決父親與兒子的問題,而是為瞭解決類的內含項目關聯性的,我們用Sub表示“子類”,用Sup表示“父類”,則有: Sub Sup 這是有區別的,例如通常我們能夠將子類當成父類來使用,但認人的時候我們並不能把兒子當成父親。
Time of Update: 2018-12-08
Javascript中存在“類”嗎? 萬物皆對象 Javascript中除了基本資料(Undefined、Null、Boolean、Number、String),其他都是對象(Object)。 實際上,Javascript中的對象是資料與功能的集合。例如我們知道: 複製代碼 代碼如下:var foo = new Function("alert('hello world!')"); foo();可見foo是一個函數,也是一種對象。再比如說: 複製代碼 代碼如下:function foo(){ //
Time of Update: 2018-12-08
在眾多的瀏覽器產品中,IE、Firefox、Opera、Safari........眾多品牌卻標準不一,因此時常需要根據不同的瀏覽器,甚至相同瀏覽器不同版本做不同的操作,因此,知曉瀏覽器的判斷方法,還是很重要的。下面列舉一下常用的判斷方法 1、判斷瀏覽器是否為IE document.all ? 'IE' : 'others':在IE下document.all值為1,而其他瀏覽器下的值為0; navigator.userAgent.indexOf("MSIE")>0 ? 'IE' :
Time of Update: 2018-12-08
在上一篇javascript動態載入中,提到了使用同步載入策略這一個方式來實現如 複製代碼 代碼如下:Using("jquery"); Using("User"); $("#ID").click(function(){ var user = new User(); user.name = "xx"; user.show(); }); 由於JS是單線程的,所以同步策略帶來的壞處不少,比如阻止之後的代碼運行、造成瀏覽器假死等問題。 使用非同步策略又難以實現先導包
Time of Update: 2018-12-08
複製代碼 代碼如下:isNull: function(a){ return a === null; }, isUndefined: function(a){ return a === undefined; }, isNumber: function(a){ return typeof a === 'number'; }, isString: function(a){ return typeof a === 'string'; }, isBoolean: function(a){ return
Time of Update: 2018-12-08
我們先看一段傳統的繼承代碼: 複製代碼 代碼如下://定義超類 function Father(){ this.name = "父親"; } Father.prototype.theSuperValue = ["NO1","NO2"]; //定義子類 function Child(){ } //實現繼承 Child.prototype = new Father(); //修改共用數組 Child.prototype.theSuperValue.push("修改"); //建立子類執行個體
Time of Update: 2018-12-08
請看源碼: 複製代碼 代碼如下:function clone(o) { var F = function(){}; F.prototype = o; return new F(); } 首先看ext(4.1的1896行開始)的原型式繼承。 複製代碼 代碼如下:var TemplateClass = function(){}; var ExtObject = Ext.Object = { chain: function (object) { TemplateClass.prototype =
Time of Update: 2018-12-08
Daniel Clifford 在 Google I/O 2012 上做了一個精彩的演講“Breaking the JavaScript Speed Limit with V8”。在演講中,他深入解釋了13個簡單的代碼最佳化方法,可以讓你的代碼在 Chrome 的 V8 JavaScript 引擎編譯/運行你的 JavaScript 代碼更加快速。在演講中,他解釋了怎麼最佳化,並且解釋了原因。下面簡明的列出了最佳化的要點: 1. 在建構函式中初始化所有的對象 2.
Time of Update: 2018-12-08
對象 建立 對象 建構函式 公有、私人、特權、靜態成員 this、call和apply 異常處理 繼承 原型 對象 在JavaScript,可以說everything is object,那麼什麼是對象?對象就是包含一組變數和函數的集合。在其它物件導向語言中對象是由類的執行個體化而來,JavaScript是基於原型的物件導向語言,沒有類的概念,對象派生自現有對象的副本。JavaScript中對象可以分為兩類:Function和Object。 建立對象
Time of Update: 2018-12-08
你知道下面的JavaScript代碼執行後會alert出什麼值嗎? 複製代碼 代碼如下:var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 如果答案是"10"令你感到驚訝的話,那麼下面這個會讓你更加困惑: [/code] var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); [/code]
Time of Update: 2018-12-08
1.URI方法 encodeURI()和encodeURIComponent()對URI進行編碼 encodeURI()不會對本身屬於URI的特殊字元進行編碼,如冒號,正斜杠,問好,井字等 encodeURIComponent()會對任何非標準字元進行編碼 2.eval() 方法:解釋參數中的代碼字串 複製代碼 代碼如下:var msg = "hello world"; eval("alert(msg)"); //"hello world" 3.Math 對象 Math.E 數學中的e的值
Time of Update: 2018-12-08
1.逾時調用setTimeout() setTimeout() 方法接受兩個參數,第一個參數是函數,第二個參數是時間(單位微秒),返回數值ID 複製代碼 代碼如下:setTimeout( function () { alert("你好!"); },1000); 調用前取消clearTimeout(),接受一個參數逾時調用ID 複製代碼 代碼如下:var timeOutId = setTimeout( function () { alert("你好!"); },1000);
Time of Update: 2018-12-08
1.修飾符 . 任意一個字元 * 匹配*前面0個或多個字元 + 匹配+前面一個或多個字元 ? 匹配?前面0個或1個字元 ^ 以^後面的字元為前置 $ 以$前面的字元結尾 [] 匹配[]內的一個字元 () 分組,可以用\1 \2提取 [^] 匹配^後的以外的字元 {n} {n}前的字元有n個,n為正數 {n,} {n,}前的字元至少有n個,n為正數 {n,m} {n,m}前的字元有n~m個,n,m為正數 2.字元 \d 一個數字 \D 一個非數字 \w 一個字母或數字 \W 一個非字母和非數字 \
Time of Update: 2018-12-08
本節要用到的html例子 複製代碼 代碼如下:<ul id="myList"> <li>項目一</li> <li>項目二</li> <li>項目三</li> </ul> 1.建立元素節點 document.createElement() 方法 用於建立元素,接受一個參數,即要建立元素的標籤名,返回建立的元素節點 複製代碼 代碼如下:var div =
Time of Update: 2018-12-08
toFixed() 方法指定小數位個數 toExponential() 方法 用科學計數法表示數,參數指定小數位個數 toPrecision() 方法自動判斷調用toFixed()或toExponential()方法,參數指定所有數的位元 複製代碼 代碼如下:var num = 99; alert(toFixed(2)); //99.00 alert(toExponential(1)); //9.0e+1 alert(toPrecision(1)); //9.0e+1
Time of Update: 2018-12-08
複製代碼 代碼如下://檢測非IE瀏覽器外掛程式函數 function hasPlugin(name) { name = name.toLowerCase(); for (var i=0 ; i < navigator.plugins.length ; i++ ) { if (navigator.plugins[i].name.toLowerCase().indexOf(name) >-1) { return true; } } return false; }