Javascript & DHTML 執行個體編程
來源:互聯網
上載者:User
[ 2007-04-11 14:31:50 | Author: never-online ]
這一節首先請下載JScript.chm這本手冊,無論新手老手,有一本手冊是免不了的,特別是對於新手,如果你沒有空翻犀牛書,那麼這本手冊將是你瞭解這門語言的首選。下面所講的大多數,手冊上可以沒有提及,或提及很少的內容。
以下的教程都是針對你對上面所說的JScript.chm這本手冊瞭解的基礎上而寫的,如果你還沒有看過JScript.chm,建議你先下載,邊看手冊,邊看教程。
JS的文法與大多數類C的語言差不多的文法,差別只在它本身的特性上面。所以文法的具體內容,我不再多寫,多看看手冊應該明白的。
JS五大對象:String, Number, Boolean, Object, Function。
JS四種迴圈:
for(var i=0; i<n; i++) {}
do {} while(true);
while(true) {}
for (var i in collection) {}
異常處理:
try {} catch(aVariable){}
JS文法我就不一一列舉了,這裡只JS的幾大對象進行一些說明,手冊也許是沒有說到的。
一、字串。
字串是最常用的。而強制轉換成字串的方式至少有幾下兩種:
1、用字串串連符"+"號。+號在JS裡如果是運算就是加,如果是字串,就是拼接,比如:
<script>
var a_number = 1000
var a_string = a_number + "";
</script>
2、用String強制轉型(String)。
<script>
var a_number = 1000
var a_string = String(a_number);
</script>
在這裡要注意一點,上面說的是強制轉型,String前是沒有"new"關鍵字的。如果加上new 關鍵字,那麼得到的將是一個String對象。對象可以包含屬性和方法,而字串不能,以下可以做一個比較:
<script>
var a_number = 1000
var a_string = String(a_number);
a_string.property = "js";
alert(a_string.property) //將提示undefined
var a_object = new String(a_number)
a_object.property = "js";
alert(a_object.property) //將提示js
</script>
所以,有new和沒有new是有區別的。這一點在Number,Boolean裡都是如此,所以關於這樣的轉型,在以後中將不再多說。
二、數字(Number)。
這裡也說一說轉型的問題。
除
了可以用Number來強制轉型外,也可以用parseInt, parseFloat來轉成整型或者浮點型。如果轉型後不是數字,那麼,將返回NaN
(Not a Number),這個時候可以用isNaN函數來判斷,這裡你可以查一下手冊,看看裡面的文法。順便記一下這個函數。
三、布爾型(Boolean)。
這一個就較麻煩一些了,因為JS裡對它的處理比較奇特。
除了JScript手冊上所說的:“
一個值為 true 或者 false 的運算式。如果需要,非 Boolean 運算式也可以被轉換為 Boolean 值,但是要遵循下列規則:
所有的對象都被當作 true。
若且唯若字串為空白時,該字串被當作 false。
null 和 undefined 被當作 false。
若且唯若數字為零時,該數字被當作 false。
”以外,還應該注意:
首先,在沒有強制轉換成布爾型之前,也就是非true或者也非false的時候
1、在數字條件判斷中,一般情況下就是三種情況:0,負數,正數,只要是非0就是true,下面是樣本。
<script>
var a = 0;
var b = -1;
var c = 1;
function assert (aVar) {
if (aVar) alert(true);
else alert(false);
}
assert(a) // false
assert(b) // true
assert(c) // true
</script>
注意:上例中的條件判斷是直接判斷條件陳述式的,如果我們把條件陳述式改成:
<script>
var a = 0;
var b = -1;
var c = 1;
function assert (aVar) {
if (aVar==true) alert(true);
else alert(false);
}
assert(a) // false
assert(b) // false
assert(c) // true
</script>
負數會有截然不同的結果。
2、在字串中,也需要注意
<script>
function assert (aVar) {
if (aVar) alert(true);
else alert(false);
}
var a="undefined";
var b="false";
var c="";
assert(a) // true
assert(b) // true
assert(c) // false
</script>
注意:上例中的條件判斷是直接判斷條件陳述式的,如果我們把條件陳述式改成:
<script>
function assert (aVar) {
if (aVar==true) alert(true);
else alert(false);
}
var a="undefined";
var b="false";
var c="";
assert(a) // false
assert(b) // false
assert(c) // false
</script>
也會有截然不同的結果。因此,在處理這方面問題的時候要小心。
也許有些朋友看到這裡就會有點暈了,那麼怎麼樣才能像手冊中所說,只有"",0,null,undefined這些才能是false呢?方法至少有兩種:
(一)、強制轉型:
1、用上面所說過的Boolean(aVar)來轉型。
2、用“非運算子”來轉型。比如上例
<script>
function assert (aVar) {
if (!!aVar==true) alert(true);
else alert(false);
}
var a="undefined";
var b="false";
var c="";
assert(a) // true
assert(b) // true
assert(c) // false
</script>
兩個取反,將aVar轉成Boolean型,相當於Boolean(aVar)。
(二)、全等運算子。
全等運算子是三個等於"===",這與上面所說的不同,它只進行同類型的比較。就上例所說,它只比較的是true或者false,如果與字串或數字等比,都是false,只有與true相比,才是true。舉例:
<script>
function assert (aVar) {
if (aVar===true) alert(true);
else alert(false);
}
var a="undefined";
var b=true;
var c=1;
assert(a) // false
assert(b) // true
assert(c) // false
</script>
四、對象(Object)。
JS建立對象有至少以下兩種方法:
1、如上所說,用new關鍵字。比如new Number(100),new String("string"),new Object(),new customFunction()等。
這種方法在手冊上有很詳細的說明,這裡就不再多說。
2、還可以用花括弧括起來。比如
var o = {
m1:'never-online.net',
m2:'blog'
}
這種方法就比較省時省力了。利用這種方法來建立對象,需要注意的就是,
每個成員後有一個":"冒號,冒號後是該成員的內容。
其次就是,成員內容後有一個逗號",",但僅最後一個成員是沒有逗號的。
五、函數(Function)。
函數在JS裡的作用有兩個,
一是做為一個普通函數一樣被調用。
二是可以做為一個"類"(class)來使用。
第一條就沒有什麼可說明的了,手冊上說得很清楚了,第二條就簡要說明一下。
上面第四點裡說到對象,除了建立JS本身的對象之外,需要建立一個類的執行個體,那麼就必須先把“類”寫出來。這個類就是Function。
比如:
<script>
function myclass() {
this.m1="member--m1";
this.m2="member--m2";
}
var o = new myclass();
</script>
六、關於this和new關鍵字。
也許有些朋友還不太清楚這個this的作用是什麼。這是物件導向裡所提及的內容
這裡也簡單說一下,this就是“自己”的意思,而上面的的“自己”,就是指myclass。
舉個例子來說myclass這個類就是一個模具,模具上有一個名字(m1),還有一個螺絲(m2),而new關鍵字就可以理解成“生產”。那麼就可以把上面的代碼理解成:
(模具 myclass)function myclass() {
(模具myclass的名字是)this.m1="member--m1"
(模具myclass上面的螺絲是)this.m2="member--m2";
}
按照模具myclass的樣式生產一個產品o
var o= new myclass();
這個剛出爐的產品就有模具myclass的所有特性了。當然,我們可以按照這個模具的樣式生產成千上萬個。
如果我們願意,我們還可以修改一下他的屬性,比如,我生產完一個產品,想把他的名字換了。我們也可以這麼做
var product = new myclass();
product.m1 = "newProduct"
上面這樣講解,希望能清楚一些。
基本把要說的基礎知識簡單的說了一些,JS的基礎知識其實也有很多,知道有疏忽,但是又不便多寫,寫多了就煩瑣了,只有走一步看一步了,看看還有什麼不清楚的,才能再寫出來