Javascript & DHTML 實(shí)例編程(教程)基礎(chǔ)知識(shí)
更新時(shí)間:2007年06月02日 00:00:00 作者:
[ 2007-04-11 14:31:50 | Author: never-online ]
這一節(jié)首先請(qǐng)下載JScript.chm這本手冊(cè),無論新手老手,有一本手冊(cè)是免不了的,特別是對(duì)于新手,如果你沒有空翻犀牛書,那么這本手冊(cè)將是你了解這門語言的首選。下面所講的大多數(shù),手冊(cè)上可以沒有提及,或提及很少的內(nèi)容。
以下的教程都是針對(duì)你對(duì)上面所說的JScript.chm這本手冊(cè)了解的基礎(chǔ)上而寫的,如果你還沒有看過JScript.chm,建議你先下載,邊看手冊(cè),邊看教程。
JS的語法與大多數(shù)類C的語言差不多的語法,差別只在它本身的特性上面。所以語法的具體內(nèi)容,我不再多寫,多看看手冊(cè)應(yīng)該明白的。
JS五大對(duì)象:String, Number, Boolean, Object, Function。
JS四種循環(huán):
for(var i=0; i<n; i++) {}
do {} while(true);
while(true) {}
for (var i in collection) {}
異常處理:
try {} catch(aVariable){}
JS語法我就不一一列舉了,這里只JS的幾大對(duì)象進(jìn)行一些說明,手冊(cè)也許是沒有說到的。
一、字符串。
字符串是最常用的。而強(qiáng)制轉(zhuǎn)換成字符串的方式至少有幾下兩種:
1、用字符串連接符"+"號(hào)。+號(hào)在JS里如果是運(yùn)算就是加,如果是字符串,就是拼接,比如:
<script>
var a_number = 1000
var a_string = a_number + "";
</script>
2、用String強(qiáng)制轉(zhuǎn)型(String)。
<script>
var a_number = 1000
var a_string = String(a_number);
</script>
在這里要注意一點(diǎn),上面說的是強(qiáng)制轉(zhuǎn)型,String前是沒有"new"關(guān)鍵字的。如果加上new 關(guān)鍵字,那么得到的將是一個(gè)String對(duì)象。對(duì)象可以包含屬性和方法,而字符串不能,以下可以做一個(gè)比較:
<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是有區(qū)別的。這一點(diǎn)在Number,Boolean里都是如此,所以關(guān)于這樣的轉(zhuǎn)型,在以后中將不再多說。
二、數(shù)字(Number)。
這里也說一說轉(zhuǎn)型的問題。
除了可以用Number來強(qiáng)制轉(zhuǎn)型外,也可以用parseInt, parseFloat來轉(zhuǎn)成整型或者浮點(diǎn)型。如果轉(zhuǎn)型后不是數(shù)字,那么,將返回NaN(Not a Number),這個(gè)時(shí)候可以用isNaN函數(shù)來判斷,這里你可以查一下手冊(cè),看看里面的語法。順便記一下這個(gè)函數(shù)。
三、布爾型(Boolean)。
這一個(gè)就較麻煩一些了,因?yàn)镴S里對(duì)它的處理比較奇特。
除了JScript手冊(cè)上所說的:“
一個(gè)值為 true 或者 false 的表達(dá)式。如果需要,非 Boolean 表達(dá)式也可以被轉(zhuǎn)換為 Boolean 值,但是要遵循下列規(guī)則:
所有的對(duì)象都被當(dāng)作 true。
當(dāng)且僅當(dāng)字符串為空時(shí),該字符串被當(dāng)作 false。
null 和 undefined 被當(dāng)作 false。
當(dāng)且僅當(dāng)數(shù)字為零時(shí),該數(shù)字被當(dāng)作 false。
”以外,還應(yīng)該注意:
首先,在沒有強(qiáng)制轉(zhuǎn)換成布爾型之前,也就是非true或者也非false的時(shí)候
1、在數(shù)字條件判斷中,一般情況下就是三種情況:0,負(fù)數(shù),正數(shù),只要是非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>
負(fù)數(shù)會(huì)有截然不同的結(jié)果。
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>
也會(huì)有截然不同的結(jié)果。因此,在處理這方面問題的時(shí)候要小心。
也許有些朋友看到這里就會(huì)有點(diǎn)暈了,那么怎么樣才能像手冊(cè)中所說,只有"",0,null,undefined這些才能是false呢?方法至少有兩種:
(一)、強(qiáng)制轉(zhuǎn)型:
1、用上面所說過的Boolean(aVar)來轉(zhuǎn)型。
2、用“非運(yùn)算符”來轉(zhuǎn)型。比如上例
<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>
兩個(gè)取反,將aVar轉(zhuǎn)成Boolean型,相當(dāng)于Boolean(aVar)。
(二)、全等運(yùn)算符。
全等運(yùn)算符是三個(gè)等于"===",這與上面所說的不同,它只進(jìn)行同類型的比較。就上例所說,它只比較的是true或者false,如果與字符串或數(shù)字等比,都是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>
四、對(duì)象(Object)。
JS創(chuàng)建對(duì)象有至少以下兩種方法:
1、如上所說,用new關(guān)鍵字。比如new Number(100),new String("string"),new Object(),new customFunction()等。
這種方法在手冊(cè)上有很詳細(xì)的說明,這里就不再多說。
2、還可以用花括號(hào)括起來。比如
var o = {
m1:'never-online.net',
m2:'blog'
}
這種方法就比較省時(shí)省力了。利用這種方法來創(chuàng)建對(duì)象,需要注意的就是,
每個(gè)成員后有一個(gè)":"冒號(hào),冒號(hào)后是該成員的內(nèi)容。
其次就是,成員內(nèi)容后有一個(gè)逗號(hào)",",但僅最后一個(gè)成員是沒有逗號(hào)的。
五、函數(shù)(Function)。
函數(shù)在JS里的作用有兩個(gè),
一是做為一個(gè)普通函數(shù)一樣被調(diào)用。
二是可以做為一個(gè)"類"(class)來使用。
第一條就沒有什么可說明的了,手冊(cè)上說得很清楚了,第二條就簡(jiǎn)要說明一下。
上面第四點(diǎn)里說到對(duì)象,除了創(chuàng)建JS本身的對(duì)象之外,需要?jiǎng)?chuàng)建一個(gè)類的實(shí)例,那么就必須先把“類”寫出來。這個(gè)類就是Function。
比如:
<script>
function myclass() {
this.m1="member--m1";
this.m2="member--m2";
}
var o = new myclass();
</script>
六、關(guān)于this和new關(guān)鍵字。
也許有些朋友還不太清楚這個(gè)this的作用是什么。這是面向?qū)ο罄锼峒暗膬?nèi)容
這里也簡(jiǎn)單說一下,this就是“自己”的意思,而上面的的“自己”,就是指myclass。
舉個(gè)例子來說myclass這個(gè)類就是一個(gè)模具,模具上有一個(gè)名字(m1),還有一個(gè)螺絲(m2),而new關(guān)鍵字就可以理解成“生產(chǎn)”。那么就可以把上面的代碼理解成:
(模具 myclass)function myclass() {
(模具myclass的名字是)this.m1="member--m1"
(模具myclass上面的螺絲是)this.m2="member--m2";
}
按照模具myclass的樣式生產(chǎn)一個(gè)產(chǎn)品o
var o= new myclass();
這個(gè)剛出爐的產(chǎn)品就有模具myclass的所有特性了。當(dāng)然,我們可以按照這個(gè)模具的樣式生產(chǎn)成千上萬個(gè)。
如果我們?cè)敢猓覀冞€可以修改一下他的屬性,比如,我生產(chǎn)完一個(gè)產(chǎn)品,想把他的名字換了。我們也可以這么做
var product = new myclass();
product.m1 = "newProduct"
上面這樣講解,希望能清楚一些。
基本把要說的基礎(chǔ)知識(shí)簡(jiǎn)單的說了一些,JS的基礎(chǔ)知識(shí)其實(shí)也有很多,知道有疏忽,但是又不便多寫,寫多了就煩瑣了,只有走一步看一步了,看看還有什么不清楚的,才能再寫出來了
這一節(jié)首先請(qǐng)下載JScript.chm這本手冊(cè),無論新手老手,有一本手冊(cè)是免不了的,特別是對(duì)于新手,如果你沒有空翻犀牛書,那么這本手冊(cè)將是你了解這門語言的首選。下面所講的大多數(shù),手冊(cè)上可以沒有提及,或提及很少的內(nèi)容。
以下的教程都是針對(duì)你對(duì)上面所說的JScript.chm這本手冊(cè)了解的基礎(chǔ)上而寫的,如果你還沒有看過JScript.chm,建議你先下載,邊看手冊(cè),邊看教程。
JS的語法與大多數(shù)類C的語言差不多的語法,差別只在它本身的特性上面。所以語法的具體內(nèi)容,我不再多寫,多看看手冊(cè)應(yīng)該明白的。
JS五大對(duì)象:String, Number, Boolean, Object, Function。
JS四種循環(huán):
for(var i=0; i<n; i++) {}
do {} while(true);
while(true) {}
for (var i in collection) {}
異常處理:
try {} catch(aVariable){}
JS語法我就不一一列舉了,這里只JS的幾大對(duì)象進(jìn)行一些說明,手冊(cè)也許是沒有說到的。
一、字符串。
字符串是最常用的。而強(qiáng)制轉(zhuǎn)換成字符串的方式至少有幾下兩種:
1、用字符串連接符"+"號(hào)。+號(hào)在JS里如果是運(yùn)算就是加,如果是字符串,就是拼接,比如:
<script>
var a_number = 1000
var a_string = a_number + "";
</script>
2、用String強(qiáng)制轉(zhuǎn)型(String)。
<script>
var a_number = 1000
var a_string = String(a_number);
</script>
在這里要注意一點(diǎn),上面說的是強(qiáng)制轉(zhuǎn)型,String前是沒有"new"關(guān)鍵字的。如果加上new 關(guān)鍵字,那么得到的將是一個(gè)String對(duì)象。對(duì)象可以包含屬性和方法,而字符串不能,以下可以做一個(gè)比較:
<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是有區(qū)別的。這一點(diǎn)在Number,Boolean里都是如此,所以關(guān)于這樣的轉(zhuǎn)型,在以后中將不再多說。
二、數(shù)字(Number)。
這里也說一說轉(zhuǎn)型的問題。
除了可以用Number來強(qiáng)制轉(zhuǎn)型外,也可以用parseInt, parseFloat來轉(zhuǎn)成整型或者浮點(diǎn)型。如果轉(zhuǎn)型后不是數(shù)字,那么,將返回NaN(Not a Number),這個(gè)時(shí)候可以用isNaN函數(shù)來判斷,這里你可以查一下手冊(cè),看看里面的語法。順便記一下這個(gè)函數(shù)。
三、布爾型(Boolean)。
這一個(gè)就較麻煩一些了,因?yàn)镴S里對(duì)它的處理比較奇特。
除了JScript手冊(cè)上所說的:“
一個(gè)值為 true 或者 false 的表達(dá)式。如果需要,非 Boolean 表達(dá)式也可以被轉(zhuǎn)換為 Boolean 值,但是要遵循下列規(guī)則:
所有的對(duì)象都被當(dāng)作 true。
當(dāng)且僅當(dāng)字符串為空時(shí),該字符串被當(dāng)作 false。
null 和 undefined 被當(dāng)作 false。
當(dāng)且僅當(dāng)數(shù)字為零時(shí),該數(shù)字被當(dāng)作 false。
”以外,還應(yīng)該注意:
首先,在沒有強(qiáng)制轉(zhuǎn)換成布爾型之前,也就是非true或者也非false的時(shí)候
1、在數(shù)字條件判斷中,一般情況下就是三種情況:0,負(fù)數(shù),正數(shù),只要是非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>
負(fù)數(shù)會(huì)有截然不同的結(jié)果。
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>
也會(huì)有截然不同的結(jié)果。因此,在處理這方面問題的時(shí)候要小心。
也許有些朋友看到這里就會(huì)有點(diǎn)暈了,那么怎么樣才能像手冊(cè)中所說,只有"",0,null,undefined這些才能是false呢?方法至少有兩種:
(一)、強(qiáng)制轉(zhuǎn)型:
1、用上面所說過的Boolean(aVar)來轉(zhuǎn)型。
2、用“非運(yùn)算符”來轉(zhuǎn)型。比如上例
<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>
兩個(gè)取反,將aVar轉(zhuǎn)成Boolean型,相當(dāng)于Boolean(aVar)。
(二)、全等運(yùn)算符。
全等運(yùn)算符是三個(gè)等于"===",這與上面所說的不同,它只進(jìn)行同類型的比較。就上例所說,它只比較的是true或者false,如果與字符串或數(shù)字等比,都是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>
四、對(duì)象(Object)。
JS創(chuàng)建對(duì)象有至少以下兩種方法:
1、如上所說,用new關(guān)鍵字。比如new Number(100),new String("string"),new Object(),new customFunction()等。
這種方法在手冊(cè)上有很詳細(xì)的說明,這里就不再多說。
2、還可以用花括號(hào)括起來。比如
var o = {
m1:'never-online.net',
m2:'blog'
}
這種方法就比較省時(shí)省力了。利用這種方法來創(chuàng)建對(duì)象,需要注意的就是,
每個(gè)成員后有一個(gè)":"冒號(hào),冒號(hào)后是該成員的內(nèi)容。
其次就是,成員內(nèi)容后有一個(gè)逗號(hào)",",但僅最后一個(gè)成員是沒有逗號(hào)的。
五、函數(shù)(Function)。
函數(shù)在JS里的作用有兩個(gè),
一是做為一個(gè)普通函數(shù)一樣被調(diào)用。
二是可以做為一個(gè)"類"(class)來使用。
第一條就沒有什么可說明的了,手冊(cè)上說得很清楚了,第二條就簡(jiǎn)要說明一下。
上面第四點(diǎn)里說到對(duì)象,除了創(chuàng)建JS本身的對(duì)象之外,需要?jiǎng)?chuàng)建一個(gè)類的實(shí)例,那么就必須先把“類”寫出來。這個(gè)類就是Function。
比如:
<script>
function myclass() {
this.m1="member--m1";
this.m2="member--m2";
}
var o = new myclass();
</script>
六、關(guān)于this和new關(guān)鍵字。
也許有些朋友還不太清楚這個(gè)this的作用是什么。這是面向?qū)ο罄锼峒暗膬?nèi)容
這里也簡(jiǎn)單說一下,this就是“自己”的意思,而上面的的“自己”,就是指myclass。
舉個(gè)例子來說myclass這個(gè)類就是一個(gè)模具,模具上有一個(gè)名字(m1),還有一個(gè)螺絲(m2),而new關(guān)鍵字就可以理解成“生產(chǎn)”。那么就可以把上面的代碼理解成:
(模具 myclass)function myclass() {
(模具myclass的名字是)this.m1="member--m1"
(模具myclass上面的螺絲是)this.m2="member--m2";
}
按照模具myclass的樣式生產(chǎn)一個(gè)產(chǎn)品o
var o= new myclass();
這個(gè)剛出爐的產(chǎn)品就有模具myclass的所有特性了。當(dāng)然,我們可以按照這個(gè)模具的樣式生產(chǎn)成千上萬個(gè)。
如果我們?cè)敢猓覀冞€可以修改一下他的屬性,比如,我生產(chǎn)完一個(gè)產(chǎn)品,想把他的名字換了。我們也可以這么做
var product = new myclass();
product.m1 = "newProduct"
上面這樣講解,希望能清楚一些。
基本把要說的基礎(chǔ)知識(shí)簡(jiǎn)單的說了一些,JS的基礎(chǔ)知識(shí)其實(shí)也有很多,知道有疏忽,但是又不便多寫,寫多了就煩瑣了,只有走一步看一步了,看看還有什么不清楚的,才能再寫出來了
相關(guān)文章
JavaScript函數(shù)中上下文有哪些規(guī)則
上下文是從英文context翻譯過來,指的是一種環(huán)境。在軟件工程中,上下文是一種屬性的有序序列,它們?yōu)轳v留在環(huán)境內(nèi)的對(duì)象定義環(huán)境。在對(duì)象的激活過程中創(chuàng)建上下文,對(duì)象被配置為要求某些自動(dòng)服務(wù)。又比如計(jì)算機(jī)技術(shù)中,相對(duì)于進(jìn)程而言,上下文就是進(jìn)程執(zhí)行時(shí)的環(huán)境2021-10-10淺談JavaScript Date日期和時(shí)間對(duì)象
這篇文章主要介紹了JavaScript Date日期和時(shí)間對(duì)象的相關(guān)資料,需要的朋友可以參考下2014-12-12JavaScript Math.floor方法(對(duì)數(shù)值向下取整)
這篇文章主要介紹了Math.floor 方法用于對(duì)數(shù)值向下取整,即得到小于或等于該數(shù)值的最大整數(shù),需要的朋友可以參考下2015-01-01詳解js動(dòng)態(tài)獲取瀏覽器或頁面等容器的寬高
這篇文章主要介紹了js動(dòng)態(tài)獲取瀏覽器或頁面等容器的寬高,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03