javascript面向?qū)ο笕腴T基礎(chǔ)詳細(xì)介紹
簡單點(diǎn)說,編程語言中的對象是對現(xiàn)實(shí)中事物的簡化。例如,我們一個(gè)人就是一個(gè)對象,但是編程語言很難完全描述一個(gè)這樣復(fù)雜的對象。所以我們必須做出簡化,首先,將人簡化成屬性和行為的組合,然后僅僅保留對程序有意義的幾個(gè)屬性以及行為。例如,我們做一個(gè)統(tǒng)計(jì)某學(xué)校的人的身高的程序,那么我們在這個(gè)程序中就可以把人的行為省略掉,只保留行為,并且只保留身高這一個(gè)屬性。這樣,我們就得到了一個(gè)最簡單的對象。
JavaScript字符串對象
對象的屬性
其實(shí)我們之前在HTML DOM中已經(jīng)就是在使用對象了。例如,我們知道,DOM節(jié)點(diǎn)有一些信息、例如nodeName、nodeType等,其實(shí)這些信息就是節(jié)點(diǎn)對象的屬性。下面我們以字符串為例來看看對象的屬性。
字符串的屬性
var s = "我有個(gè)7個(gè)字符";定義了s這個(gè)字符串之后,我們就有了一個(gè)字符串對象,我們可以訪問它的長度屬性(length),這個(gè)屬性不需要我們定義,它是一個(gè)內(nèi)置的屬性。訪問的方式如下:
s.length點(diǎn)擊下面的按鈕看看字符串的長度。
alert(s.length)
字符串對象的方法(行為)
同樣,對象也可以有行為,以字符串對象為例,我們可以讓字符串返回某一個(gè)位置的字母或文字,這就是一個(gè)行為??梢杂煤竺娴陌粹o簡單地體驗(yàn)一下字符串的各個(gè)屬性與方法,本文最后會詳細(xì)地解釋各個(gè)方法的使用方法。
<script type="text/javascript">
var s = "我有個(gè)7個(gè)字符";var str = "字符" + "串"; //兩個(gè)字符串相加
alert(str)
</script>
使用字符串的length屬性為字符串的長度。
alert(str.length)
使用charAt方法返回指定位置的字符。
alert(str.charAt(0))
alert(str.charAt(1))
substring方法從字符串中截取一個(gè)子字符串。
alert(str.substring(0,2))
indexOf返回字符串中指定字符或字符串的位置,如果字符不存在就返回-1。
alert(str.indexOf('符')
lastIndexOf方法返回一個(gè)字符串中某字符最后一次出現(xiàn)的位置。
date對象
實(shí)例JavaScript date代碼
我們先來看一段使用了date對象的JS代碼。點(diǎn)擊下面的幾個(gè)按鈕就可以看到各個(gè)變量的值了。
<script type="text/javascript">
var today = new Date(); //新建一個(gè)Date對象
var todayStr = today.toString();//把日期轉(zhuǎn)化為字符串
var todayLocal = today.toLocaleString();//轉(zhuǎn)換為本地字符串
var date = today.getDate();//查詢當(dāng)月日期
var day = today.getDay();//查詢當(dāng)前星期幾
var month = today.getMonth();//查詢月份
var year = today.getFullYear();//查詢年份
alert(todayStr);
alert(todayLocal);
alert(date);
alert(day);
alert(month);
alert(year);
</script>
新建一個(gè)Date對象
我們使用如下這個(gè)語句來創(chuàng)建一個(gè)Date對象。
var today = new Date();執(zhí)行之后,today變量里就保存了創(chuàng)建的Date對象。
字符串對象的方法(行為)
JavaScript date對象查詢(get)方法
JavaScript date對象設(shè)置(set)方法
JavaScript date對象轉(zhuǎn)換(to)方法
JavaScript Date對象應(yīng)用實(shí)例——時(shí)鐘代碼
本代碼轉(zhuǎn)自w3schools.com。
<script type="text/javascript">
function startTime(){var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();//當(dāng)數(shù)字小于10的時(shí)候在前面加一個(gè)0
m=checkTime(m);s=checkTime(s);
document.getElementById('clock').innerHTML=h+":"+m+":"+s;//每隔500毫秒重新執(zhí)行一次
startTimet=setTimeout('startTime()',500);}
function checkTime(i){
if (i<10){
i="0" + i;
}
return i;
}
</script>
數(shù)組對象
創(chuàng)建一個(gè)JavaScript數(shù)組
<script type="text/javascript">
//笨方法
var arr = new Array("HTML","CSS","JavaScript","DOM");
//省事一點(diǎn)的方法
var arr = ["HTML","CSS","JavaScript","DOM"];
與字符串對象一樣,數(shù)組也有一個(gè)length屬性,不過它的意思是數(shù)組包含元素的個(gè)數(shù)。點(diǎn)擊下面的按鈕可以看到arr的長度為4。
alert(arr.length)
</script>
實(shí)例JavaScript數(shù)組代碼
下面是一段簡單的使用數(shù)組的JS代碼,可以點(diǎn)擊后面的按鈕來觀察各個(gè)變量的值。
<script type="text/javascript">
var arr = new Array("HTML","CSS","JavaScript","DOM");
var arr2 = new Array("ASP.NET","PHP","J2EE","Python","Ruby");
var joinArr = arr.join();
var bigArr = arr.concat(arr2);
var sortArr = bigArr.sort();
</script>
arr[n]返回?cái)?shù)組指定位置的元素,n叫做下標(biāo),從0開始。 可以點(diǎn)擊下面的按鈕來查看arr各個(gè)位置上的元素。
alert(arr[0]) //位置0,也就是第一個(gè)元素
alert(arr[1])
alert(arr[2])
alert(arr[3])
從上面的代碼可以看到,在調(diào)用了數(shù)組的幾個(gè)方法之后得到了joinArr、bigArr、sortArr這幾個(gè)變量,這些方法將在后面具體介紹??梢韵扔^察變量的值來猜猜這些方法的作用。
數(shù)學(xué)對象
例JavaScript Math代碼
<script type="text/javascript">
var num = Math.PI;
var rNum = Math.round(num);//四舍五入
</script>
我們首先吧Math.PI的值保存在num中,這是一個(gè)JS內(nèi)置的常量,可以點(diǎn)擊下面的按鈕來查看它的值。
alert(num)
rNum則是num經(jīng)過四舍五入的值。
alert(rNum)
random方法則產(chǎn)生一個(gè)0-1之間的隨機(jī)值。試著多點(diǎn)擊幾次下面的按鈕,可以發(fā)現(xiàn)得到的數(shù)字會不斷改變。
alert(Math.random())
函數(shù)對象
在JavaScript中,函數(shù)也是對象,我們使用下面以下語句定義一個(gè)函數(shù)的時(shí)候,其實(shí)是定義了一個(gè)Function類型的對象。
function add(a,b){
return a+b;
}
為了說明這個(gè)問題,我們可以使用Function的構(gòu)造函數(shù)來定義一個(gè)add函數(shù):
<script type="text/javascript">
var add = new Function('a','b','return a+b');
alert(add(1,2));
</script>
使用這種方法定義的函數(shù)和上面的函數(shù)完全一樣,不過這種語法比較麻煩,一般不會使用。
(函數(shù))Function對象的call方法
call是一個(gè)非常有用的方法,它可以控制函數(shù)的運(yùn)行環(huán)境,即控制函數(shù)內(nèi)部this所指向的對象。下面的例子可以說明這個(gè)問題:
function whatsThis(){ alert(this); }我們調(diào)用以上函數(shù)的時(shí)候,將會看到this指向的是window,實(shí)驗(yàn)一下:
whatsThis()
但是如果使用call,我們則可以控制函數(shù)內(nèi)部this的指向,例如:
whatsThis.call(document)()
以上代碼使用function對象的call方法將函數(shù)內(nèi)部的this指向了document。
如果原來的函數(shù)需要接受參數(shù),例如add函數(shù),可以使用如下形式:
add.call(document,1,2)也就是說,call的第一個(gè)參數(shù)是要綁定給this的對象,而1和2則是原來的add函數(shù)需要接受的參數(shù)。
(函數(shù))Function對象的apply方法
apply的使用方法與call基本一致,只是參數(shù)是以數(shù)組的形式傳遞的,還是以add函數(shù)為例:
add.call(document,[1,2])可以看到,原函數(shù)add需要接受的兩個(gè)數(shù)字參數(shù)是以一個(gè)數(shù)組的形式傳遞進(jìn)apply的。
(函數(shù))Function對象的caller屬性
function whoCalls(){ alert(whoCalls.caller); } function SheCalls(){ whoCalls(); }whoCalls()SheCalls()
使用caller屬性,可以了解誰調(diào)用了當(dāng)前函數(shù)。注意,只有在函數(shù)體內(nèi)部caller才有效。
(函數(shù))Function對象的arguments屬性
javascript的函數(shù)可以接受任意數(shù)量的參數(shù),所以定義的時(shí)候,參數(shù)的個(gè)數(shù)作并不會限制函數(shù)的這個(gè)能力。在函數(shù)中,我們可以使用arguments來訪問傳入函數(shù)的參數(shù),例如:
function howmany(){ var num = arguments.length; alert(num); }howmany函數(shù)會輸出傳遞如函數(shù)參數(shù)的個(gè)數(shù),點(diǎn)擊下面的連個(gè)按鈕試驗(yàn)一下。
howmany(1,2,3,4)howmany(1,2,3,4,5,6,7,8)
函數(shù)arguments.callee
我們已經(jīng)知道function會有arguments屬性,而arguments.callee則是當(dāng)前正在執(zhí)行的函數(shù),例如:
function whoAmI(){ alert(arguments.callee); }whoAmI()
執(zhí)行以上函數(shù)會顯示出當(dāng)前函數(shù)的源代碼。當(dāng)然了,我們可以再次調(diào)用callee,這主要用于匿名函數(shù)遞歸。
- 面向?qū)ο蟮腏avascript之二(接口實(shí)現(xiàn)介紹)
- Javascript 面向?qū)ο螅ㄈ┙涌诖a
- JavaScript面向?qū)ο笾薪涌趯?shí)現(xiàn)方法詳解
- Javascript之面向?qū)ο?-接口
- JavaScript接口的實(shí)現(xiàn)三種方式(推薦)
- JavaScript接口實(shí)現(xiàn)代碼 (Interfaces In JavaScript)
- Javascript 面向?qū)ο螅ㄒ唬?共有方法,私有方法,特權(quán)方法)
- 淺談Javascript面向?qū)ο缶幊?/a>
- js面向?qū)ο笾R妱?chuàng)建對象的幾種方式(工廠模式、構(gòu)造函數(shù)模式、原型模式)
- 從面試題學(xué)習(xí)Javascript 面向?qū)ο螅▌?chuàng)建對象)
- Javascript 面向?qū)ο螅ǘ┓庋b代碼
- JavaScript 接口原理與用法實(shí)例詳解
相關(guān)文章
收集的幾個(gè)不錯(cuò)的javascript類小例子
自己比較喜歡javascript類,主要是方便擴(kuò)展。2007-12-12JS類定義原型方法的兩種實(shí)現(xiàn)的區(qū)別評論很多
JS類定義原型方法的兩種實(shí)現(xiàn)的區(qū)別評論很多...2007-09-09JavaScript isPrototypeOf和hasOwnProperty使用區(qū)別
JavaScript isPrototypeOf和hasOwnProperty的使用技巧,需要的朋友的朋友可以參考下。2010-03-03javascript 面向?qū)ο?實(shí)現(xiàn)namespace,class,繼承,重載
這幾天老大天天嚷嚷要重構(gòu)我們寫的javascript,抱怨代碼太混亂,可讀性差,維護(hù)困難,要求javascript也按面對象的模型來重構(gòu)。2009-10-10js面向?qū)ο笤O(shè)計(jì)用{}好還是function(){}好(構(gòu)造函數(shù))
js面向?qū)ο笤O(shè)計(jì)用{}好還是function(){}好,大家給予了回復(fù),感覺不錯(cuò),特分享給大家。2011-10-10JavaScript 面向?qū)ο缶幊蹋?) 基礎(chǔ)
自從有了Ajax這個(gè)概念,JavaScript作為Ajax的利器,其作用一路飆升。JavaScript最基本的使用,以及語法、瀏覽器對象等等東東在這里就不累贅了。把主要篇幅放在如何實(shí)現(xiàn)JavaScript的面向?qū)ο缶幊谭矫妗?/div> 2010-05-05JS小框架 fly javascript framework
這幾天把工作中積累的東西整理成了一個(gè)小框架,分享給大家,希望對大家有用,也想聽一下大家的批評2009-11-11JavaScript 基于原型的對象(創(chuàng)建、調(diào)用)
在我們寫js代碼的時(shí)候,內(nèi)部對象是不可避免的要引用,但是光靠這些對象是不夠的,所以需要我們自己定義對象,這個(gè)時(shí)候通常用到的對象是第三種,即基于原型的對象,下面就如何創(chuàng)建自己的對象,定義對象的方法、屬性,調(diào)用對象給出詳細(xì)的說明。2009-10-10最新評論