Time of Update: 2018-12-03
首先解釋下宿主環境:一般宿主環境由外殼程式建立與維護,只要能提供js引擎執行的環境都可稱之為外殼程式。如:web瀏覽器,一些案頭應用系統等。即由web瀏覽器或是這些案頭應用系統早就的環境即宿主環境。本機物件ECMA-262 把本機物件(native object)定義為“獨立於宿主環境的 ECMAScript
Time of Update: 2018-12-03
1. 前言有人認為JavaScript 是一門面向過程的語言。 因為基本的使用基本上都是寫函數,然後調用。 ==> 這種想法是不對的。JS的創立者是: Brendan Eich. 在JS創立的時候, Java 以及物件導向的設計已經大行其道了。1995年5月,Netscape做出決策,未來的網頁指令碼語言必須"看上去與Java足夠相似",但是比Java簡單,使得非專業的網頁作者也能很快上手。基於此,
Time of Update: 2018-12-03
首先先說明一下我想做出的網頁效果,基本上和地圖一樣,將滑鼠放在映像上之後,滾動滑鼠滑輪可以實現圖片放大和縮小,按下滑鼠後移動滑鼠可以實現映像的移動,具體效果去百度(Google)地圖體驗一下就知道了。當然,上面的只是我的初步設想,在實現過程中就出問題了,下面我把自己遇到的困難和解決方案說一下,由於這是公司項目,涉及到智慧財產權和保密問題,我就只說思想,不給代碼,代碼就自己寫吧。問題一:滑鼠滑輪時間的多瀏覽器支援問題。瀏覽器判斷滑鼠滑輪的滾動是通過滑鼠滑輪滾動時傳遞的delta值來判斷的:在IE
Time of Update: 2018-12-03
如果要使用JS 繪製一些圖形和處理一些動態圖形, 比如想繪製一些流程圖什麼的, Raphaël是一個不錯的選擇。從著作權資訊上看, 和大名鼎鼎的 Sencha 有一定的關係 (研發Extjs的公司)。官方是:http://raphaeljs.com/index.html一般的下載大小是89k, 使用GZIP壓縮之後的版本只有31K, 沒有壓縮的版本大小也只有221 K.Raphaël是可以簡化web向量圖形開發的很小的js庫。 它可以幫你建立一些特殊的表徵圖和旋轉的效果。Raphaël使用的是
Time of Update: 2018-12-03
JS 資料類型在介紹這三個之間的差別之前, 先來看一下JS 的資料類型。在 Java ,C這樣的語言中, 使用一個變數之前,需要先定義這個變數並指定它的資料類型,是整型,字串型,....但是在js 中定義變數統一使用 var , 或者不使用var 也可以使用。那麼js 中是否有資料類型的概念呢? 當然有, 使用 typeof 就可以判斷這個變數的資料類型:<!--Add by oscar999--><!DOCTYPE HTML PUBLIC "-//W3C//DTD
Time of Update: 2018-12-03
前言定位browser 的 chart, VML,SVG, HTML5 Canvas使用的方式各不一樣。如果使用現有的js library (各種實現js 圖表的library匯總與比較) , 調用的API方式也肯定不同。舉個例子: draw2d 使用addFigure 和 setPosition 都可以設定圖的位置。混在特定技術或是特定library 裡去layout , 很明顯不是一個明智之舉。切分開來, layout
Time of Update: 2018-12-03
昨天在著名前端架構師Baranovskiy的部落格中看到一個文章《So, you think you know JavaScript?》題目一:if (!("a" in window)) { var a = 1;}alert(a);題目二:var a = 1, b = function a(x) { x && a(--x); };alert(a);題目三:function a(x) { return x * 2;}var a;alert(a)
Time of Update: 2018-12-03
SVG spec 1.2以及之前的版本標準中,都只有一種繪製橢圓弧的方式,即以起點、終點、長半軸、短半軸、大小弧標記、順逆時針方向標記、傾角為參數來確定一段弧。這個方法很強大並靈活,可繪製任意的橢圓弧。有時候我們需要計算圓弧的圓心和起始角度、結束角度,雖然標準官方文檔給出了計算公式的描述,但是沒有給出直接的代碼。我根據標準文檔以及網上的資料,寫了一個Javascript函數來做這件事。 // svg : [A | a] (rx ry x-axis-rotation
Time of Update: 2018-12-03
在javascript中,如果在聲明一個局部變數時,前面沒有加var,則此局部變數會變成全域變數,基於此,在方法中寫for迴圈的時候,記得給迴圈變數加上varvar i=0; //定義全域變數0function unUserVar(){for(i=0;i<1;i++){ //這裡沒有加var,所以會把之前的i覆蓋掉,導致程式BUGalert("inner i:"+i);}}unUserVar();alert(i); //顯示1,而不是之前定義的0function userVar(){
Time of Update: 2018-12-03
javascript 和 VC互動,VC 不能將傳回值放在參數(方向out)中:“JavaScript does not support [in, out], only [in] and [out, retval]. JavaScript has no syntax for passing parameters by reference. You can use retval or add another property for last
Time of Update: 2018-12-03
1 判斷是否為數群組類型2 判斷是否為字串類型3 判斷是否為數實值型別4 判斷是否為日期類型5 判斷是否為函數6 判斷是否為對象1 判斷是否為數群組類型linenum<script type="text/javascript"> //<![CDATA[ var a=[0]; document.write(isArray(a),'<br/>'); function isArray(obj){ return (typeof
Time of Update: 2018-12-03
1. charCodeAt ()將字元轉換為代碼;var str="Hello world!"document.write(str.charCodeAt(1)) 'cjk': [ 'u4e00', 'u9fa5' ], // 漢字 [一-龥] 'num': [ 'u0030', 'u0039' ], // 數字 [0-9] 'lal': [ 'u0061', 'u007a' ], // 小寫字母 [a-z]
Time of Update: 2018-12-03
call 能實作類別似的物件導向繼承:function Person(){this.a = 'person';this.b = function(){alert('I\'m a person!');}this.c = 'Person\' c property';this.d = function(){alert('Person\' function d.');};}function Student(){Person.call(this);this.a = 'student';this.e = '
Time of Update: 2018-12-03
DOM節點類型,在遍曆處理中非常有用,可以過濾掉不關心的節點。如:function showPageAttr(){var divImgShowArea = document.getElementById('divImgShowArea');var nodes = divImgShowArea.childNodes;for(var i=0;i<nodes.length;i++){var img = nodes[i];if(img.nodeType != 1)continue;
Time of Update: 2018-12-03
Script中的Defer屬性如果你是一個對系統效能比較關心和在意的人,我想你應該會對Script指令碼中的defer屬性感興趣的。script中的defer屬性預設情況下是false的。按照DHTML編程寶典中的描述,對於Defer屬性是這樣寫的:Using the attribute at design time can improve the download performance of a page because the browser does not need to parse
Time of Update: 2018-12-03
Javascript中, Array 也是Object, 但有的人可能會誤認為,形如a['key'] 的訪問是Array的功能,其實不是。如下例中,Array 賦值後,其length屬性仍然為0,因為資料並沒有被放到數組的位置中,而是被放到了Array的原形對象Object中。var a = new Array();a['one'] = 1;a['two'] = 2;a['three'] =
Time of Update: 2018-12-03
在javascript中,有時候只知道一個函數的名字,但並不確定該函數有沒有,如何判斷該函數是否存在,並執行呢。一個方法是用eval() 執行拼接的程式字串,但可能帶來效能問題。另一個方法是使用符號屬性的方式來訪問函數,因為函數都是window對象的屬性。利用window[函數名] 來代表該function對象,用window[函數名]()來執行或調用該函數。例子:<html><head><meta http-equiv="Content-Type"
Time of Update: 2018-12-03
使用prototype特性,可以很方便的在子類中繼承父類的方法和屬性。下例中Vegetable視為父類,Celery視為子類。Vegetable 擁有屬性taste, 方法fun1Celery 擁有屬性 color, 方法fun2,如果再定義與Vegetable 中同名的屬性或方法,則會覆蓋父類Vegetable 中對應的屬性和方法。function Vegetable(){this.taste='delicious';this.fun1 =
Time of Update: 2018-12-03
這裡要說明的是,公有屬性(使用this.修飾符)可以被覆蓋,私人屬性(使用var 修飾符)不能被覆蓋子類不能訪問父類的私人屬性,父類的方法正常訪問父類的私人變數。function Vegetable(){this.taste='delicious';var a = 'I\'m Vegetable\'a!'this.fun1 = function(){alert('Vegetable fun1 doing...');}this.fun3 =
Time of Update: 2018-12-03
在Javascript中,要擷取字元的代碼,可以用charCodeAt()函數獲得反之,要根據代碼擷取該代碼錶示的字元,可以用String.fromCharCode() 來擷取。應用一:base64編碼,要使用到charCodeAt() 函數應用二:事件代碼轉換例子:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>建立網頁