javascript

                                                 JavaScript

什麼是JS:
1.javascript是一種侵入在網頁中的腳本語言,它是由瀏覽器解析運行的。
2.javascript是一種 基於對象 和 事件 驅動型語言。

什麼是基於對象:
基於對象不具有封裝、繼承、多態。

JS裏面的面向對象都是僞面向對象。

javascript的解析:
javascript是有文本字符串的形式供瀏覽器解析的。javascript的解析速度的java的1/50倍,是C語言的1/500倍。

語法:
javascript標示符:
1.它的變量是區分大小寫的。
2.它的變量是弱類型的。
3.每一行結尾的分號(;)都是可有可無的。

值類型:
原始值:存儲在棧中的簡單數據,它們的值就是變量的值,直接存放在變量的訪問位置
  原始值的數據類型:
  1.undefined(String,它的長度是可變的)
  2.Null(是由undefined派生出來的)
  3.Boolean(true、false)
  4.Number(數字類型)
  boolean、String、number是僞對象(擁有對象的一些特性、屬性和方法)

  var b = new Boolean(false);
  b = Boolean(false);
 
  var n = new Number(123);
  Number n = 123;

  將一個數字轉換爲boolean型:
  var num = Boolean(123);

  var b = Boolean("string");
  parseInt();
  parseFloat();
引用值(指針):可以指向一個變量,也可以指向一個對象,還可以指向一個函數。存儲在堆中的對象,存儲在變量處的值是一個指針,它指向存儲對象的內存處

object類型:
javascript中所有的對象(類)都是從object繼承而來
object類型裏面的屬性:
1.prototype:對該對象的原型的引用
2.constructor:構造器的引用

算術運算符:
&&、||、==

流程控制:
if
else
while
swith等、和java裏面的一樣。

元運算符
1.delete
 刪除對以前對象屬性和方法的引用
2.void(這裏放的是對象)
 如果是原始值的話就返回一個undefined

函數(function)
函數的定義:它是一個特殊的引用類型,函數是一組可隨時運行的語句,所有的函數都是從function類繼承過來的。
函數如果沒有返回值,那麼就返回undefined
所有的函數中,會默認的給你一個arguments對象,把函數裏面所有的形參(以數組的形式)放在這個arguments對象裏面
function 函數名 (參數){}
javascript中有值傳遞和引用傳遞
引用傳遞:函數名永遠都是指向函數的指針
function();是一個匿名函數

eval():它是一個萬能方法


閉包
定義:閉包就是函數調用外部定義的變量


2010年7月28日 09:44:08

對象基礎
定義:javascript對象是屬性和方法的無序集合,它就相當於是一個集合
javascript有四種能力:封裝、繼承、多態、聚集
javascript裏面所有的權限都是公有的
繼承:
主要有兩種,重寫和重載,在javascript裏面重寫和重載都是方法的覆蓋,把父類裏面的屬性和方法拷貝到子類裏面了,有相同的話就把子類覆蓋了
聚集:
 把一些屬性聚集到一個類裏面,一個類擁有裝載和引用原始值和引用值的能力

javascript對象的生成和實例化:
 var v = new Object();對象後面的這個括號是可有可無的
 n = null;

javascript提供的對象分爲三大類:
本地對象、
 獨立於數組環境(提供生命的環境),有javascript(ECMAScript)實現提供的對象
 它提供了:object,afunction,Function、Array、Date、String、Boolean;
Array對象:是javascript中性能最高的一個對象。
內置對象、
 定義:它也是由javascript實現提供的,它也是獨立於數組環境的對象,它是由瀏覽器實例化之後,你只要拿過來用就可以了
Global對象:比如說parseInt我們就可以直接用,因爲它是global裏面內置提供給對象的。它不能被其它對象引用
 
宿主對象
 定義:所有的非本地對象都是宿主對象,就是由數組環境提供的(瀏覽器),所有的標籤都對應一個對象,比如<p></p>這樣的標籤就是對應着一個對象
DOM(document object model)和BOM(browser object model)都是數組對象
object可以使用{}來簡寫
綁定屬性:
var o = new Object();
o.name="value";
o["屬性名"]="value";
晚綁定:
  定義:編譯器或者解釋器在創建對象之後,將屬性綁定
早綁定:
  定義:編譯器或者解釋器在創建對象之前,將屬性綁定

在javascript裏面只有變量,而沒有屬性,所以,方法之外不能訪問變量,如果要訪問,就要使用this關鍵字
例:
   function Student(){
   this.name = "zhangsan";
   this.age = 18;
  }
  var s = new Student();
  document.write(s.name);

-*-*-*-*-*-*-*-*-*-*-*-*-*-重點*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
this:
 this永遠指向該方法的那個對象


創建對象的方式:
function a(){

}

a = function(){

}

var o = new Object(){

}
var o = {

}

原型方式:
  函數有一個原型屬性,原型有一個構造器屬性,構造器屬性裏面還有原型屬性,這兩個屬性將無限循環
  構造器.prototype.屬性:將屬性綁定到原型上面

2010年7月29日 09:37:52
BOM(瀏覽器對象模型):
  BOM提供了獨立於內容,而與瀏覽器窗口進行交互的對象
  所有的BOM和DOM都不能用來繼承

Window →|document → |links
                |images
        |location
  |Frames  :是一個框架集合
         |History :操作瀏覽器的,比如說瀏覽器上面的前進、後退等
         |location  連接
         |navigator 
         |screen

DOM(文檔對象模型):
 每個html裏面的節點都對應一個對象
 獨立於網頁內容的


Form表單:
  表單是一個高級html組件


-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
2010年7月31日 09:41:02
    事件
定義:事件是DOM模型的一部分,
事件也是一個特殊的方法
事件和函數是息息相關的
事件觸發函數,而函數監聽事件(一個事件對應一個函數)
觸發事件,調用函數(事件不是通過瀏覽器直接得到的,而是通過操作系統得到的)

事件監聽函數/處理函數:
定義:事件是用戶或瀏覽器進行特定的行爲,用於響應某個事件而調用的函數

事件函數分配方式:
1.javascript
2.HTML
它不屬於HTML事件,它只是分配到HTML裏面的
所有HTML裏面的標籤都有

事件分爲:
1.鼠標事件:用戶進行特定操作的時候觸發
2.鍵盤事件:使用鍵盤進行操作的時候觸發
     |按下事件
     |按鍵事件
     |放開事件
3.HTML事件:窗口頁面發生改變的時候觸發
突發事件:底層DOM結構發生改變的時候觸發
HTML事件和鼠標事件、鍵盤事件沒有一點關係的

事件原理
是一個樹狀結構圖,根節點就是window,所有的標籤和事件都是它的子節點,它是通過冒泡來一層一層往上執行,最終通過window來完成這個事件
所有的事件都是通過第三方(window)來完成的

模塊對話框:
  當你產生一個對話框之後,別的事件就不能對這個對話框進行操作了

ATM事件
javascript事件


2010年8月2日 09:46:03

正則表達式
正則表達式是通過ECMAScriptRegExp來實現的
正則表達式是匹配模式額外的指令
g(global):代表全部命令(全局匹配)
i:代表不區分大小寫
multiline:多行

var re = new RegExp("",""); 第一個參數就是匹配類型,第二個參數就是命令
var re = /匹配類型/命令;  一定要有嚴格的規範

RegExp對象裏面就只有二個方法使用,一個就是test(),還有exect()方法,其它的都是在String對象裏面。
如果不加全局,當匹配到第一個的時候就不會往下匹配,返回真。

簡單模式: 一個正則表達式具有很多組成部分,這些組成部分包括匹配模式和命令,如:指定字符、元字符、字符類和量詞等組成的簡單匹配模式

元字符:被正則表達式所佔用的字符就是元字符,如:【(】【[】【{】【\】【^】【$】【?】【+】【*】【.】【}】【]】【)】
(,[,{,\,^,$,?,+,*,.,},],) 中括號裏面的就是元字符

預定義字符:\t,\r,\f,\n,\a,\e...等

字符類:包含在中括號中的字符,告訴正則表達式要匹配其中的某一個,比如說要匹配a到z裏面的某一個字符就使用[a-z]

負向字符類:不包含中括號中的字符,告訴正則表達式呀匹配不在某個範圍內的字符,比如說不要匹配a到z裏面的某個字符就使用[^a-z]

組合字符類:[a-z0-9] 就是說可以匹配a到z和0到9之間的字符a-z和0-9之間不能加空格,因爲空格也算是一個字符

預定義類:
 .[^\n\r] :除\n\r以外的字符
 \d[0-9]
 \D[^0-9]
 \w[a-z0-9A-Z]
 \W[^a-z]

量詞:表示數量的多少
硬性量詞:指定了數目的多少
軟性量詞:沒有指定數目的多少

 ? :0次、一次
 * :0次、多次
 + :1次、多次

?、*、+都屬於軟性量詞

 {n} :指定出現n次
 {n,}:出現n次以上
 {n,m}:出現n-m次
{n}、{n,}、{n,m}都屬於硬性量詞

量詞分爲:
 貪婪的量詞:它首先讀第一個字符串正則匹配,如果第一個不成功,那麼它繼續往下匹配,如果有匹配的話,那麼就把前面的那個字符串刪掉,如果字符串長度不爲0,那麼它就繼續往下匹配
 惰性的量詞:首先看第一個字符是否匹配,如果這個字符不夠的話,那麼它繼續讀下一個字符,組成兩個字符,一直這樣下去,如果匹配,就刪除掉,又一次重新開始(只以出現最少次匹配)
 支配性的量詞:


選擇類:用在分組裏面的

複雜模式
複雜模式:
定義:它是由分組反向引用前瞻和其它一些強大的正則表達式功能組成

分組:是一對小括號包含一系列的字符組成

邊界:就是字符串的開頭和結尾。比如說我要控制用戶名的長度爲6-12之間,那麼就可以用邊界符^表示開頭,$表示結尾,表示:
     var reg  =/^\w{6-12}$/gi
電話號碼的正則表達式:
 var reg = /^1[358]\d$/g
Email正則表達式:
 \w{6,30}@\w{1,10}.\w{1,10}


2010年8月3日 09:56:20
   javascript繼承

prototype:
 prototype是一個類的原型對象,而對象沒有prototype.

對象冒充:
 構造函數使用this關鍵字,用this關鍵字給所有的屬性和方法賦值,(即採用類聲明的構造函數方法,因爲構造函數只是一個函數,所以可使A的構造函數成爲B函數的方法,然後調用它【B函數的那個方法】,B函數就會收到A構造函數中定義的屬性和方法)
繼承的例子:
 var A = {
  name:'zhangsan',show:function(){
   alert(this.name);
  }
 }
 var B = {};
 for ( var i in A) {
  //alert(i+"="+A[i]);
  B[i]=A[i];
 }
 B.show();

call方法:
 代替另一個對象調用它的方法或訪問它的屬性

apply方法:
 應用某一對象的一個方法,用另一個對象替換當前對象。和call方法的用法是一樣的,不過這個方法裏面要傳一個參數,這個參數呢是一個數組

原型鏈:
 就是用原型方式綁定一個屬性,但是這個屬性是指向另外一個類的實例.
B.prototype = new A();  不能給它的屬性綁定(B.prototype.a=new A(); 這樣是錯誤的) 

大括號裏面的永遠是對象,中括號裏面的永遠是數組,/這個裏面的是正則表達式/

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章