資源描述:
《javascript專(zhuān)題javascript面向?qū)ο笊稀酚蓵?huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、JavaScript專(zhuān)題—JavaScript面向?qū)ο笊辖籌TCAST簽約講師本講概述通過(guò)本講的學(xué)習(xí)你將學(xué)到:JS中的對(duì)象JS中繼承對(duì)象成員window對(duì)象作用域鏈引言在Java語(yǔ)言中有一句非常著名的話EverythingisObject。在JS中也是一樣,所有的東西都是對(duì)象。對(duì)象是一切的基礎(chǔ),在本講中首先給大家介紹下什么是對(duì)象。JS中的對(duì)象對(duì)象就是包含一組變量和函數(shù)的集合實(shí)例。通常對(duì)象由類(lèi)派生而來(lái),而類(lèi)定義了對(duì)象擁有的屬性和方法。如果你的腳本都是對(duì)象之間的交互操作那么就可以說(shuō)這個(gè)腳本是面向?qū)ο蟮哪_本。JavaScript是一種基于原型(
2、prototype)的面向?qū)ο蟮恼Z(yǔ)言,沒(méi)有類(lèi)的概念,所有的一切都派生自現(xiàn)有對(duì)象的一個(gè)副本。JavaScript中的對(duì)象分為以下2類(lèi):Function對(duì)象,例如alert()函數(shù)可以使用參數(shù)改變此類(lèi)對(duì)象的功能如alert(“abc”)Object對(duì)象,這類(lèi)對(duì)象無(wú)法像Function類(lèi)對(duì)象那樣調(diào)用,而且具有固定的功能。如:varobj=newObject();obj(“abc”);//會(huì)報(bào)錯(cuò),因?yàn)閛bj不是Function類(lèi)型的對(duì)象Function類(lèi)型對(duì)象也分為2類(lèi):Function實(shí)例,例如alert(),可以使用參數(shù)來(lái)調(diào)用。做為構(gòu)造函數(shù)的F
3、unction,必須通過(guò)new關(guān)鍵字來(lái)進(jìn)行實(shí)例化。為了提高使用效率,JavaScript提供了下列內(nèi)置對(duì)象。Object是通用基礎(chǔ)對(duì)象,可以使用它來(lái)創(chuàng)建簡(jiǎn)單的靜態(tài)對(duì)象。其簡(jiǎn)寫(xiě)是{}。Function是被所有使用參數(shù)的對(duì)象復(fù)制的對(duì)象,也是在腳本中定義函數(shù)時(shí)所創(chuàng)建的對(duì)象,其簡(jiǎn)寫(xiě)是function(){}。Array是一種特殊的屬性和方法的集合,比如使用它的length屬性可以迭代操作這類(lèi)對(duì)象,使用方括號(hào)加序號(hào)也可以訪問(wèn)它的屬性。其簡(jiǎn)寫(xiě)是[]。String、Boolean、Number分別用來(lái)表示字符串、布爾值、數(shù)字。除此之外還有Math、Dat
4、e、RegExp及其他內(nèi)置對(duì)象。所有的內(nèi)置對(duì)象都可以通過(guò)new關(guān)鍵字或其簡(jiǎn)單語(yǔ)法形式來(lái)建對(duì)象。如:varobj=newObject();等同于varobj={};vararry=newArray();等同于vararry=[];其他的就不做舉例了繼承繼承是面向?qū)ο笾兄匾慕M成部分。當(dāng)創(chuàng)建自己的對(duì)象時(shí)你可以擴(kuò)展或繼承現(xiàn)有對(duì)象的屬性和方法。繼承為重用對(duì)象提供了便捷的途徑,這樣你就可以把精力完全集中于新的改進(jìn)代碼中。與傳統(tǒng)的面向?qū)ο笳Z(yǔ)言不同,JavaScript是基于原型的面向?qū)ο筮@就導(dǎo)致無(wú)法從一個(gè)類(lèi)擴(kuò)展出另一個(gè)類(lèi)的底層類(lèi)結(jié)構(gòu)。在JS中繼承是通過(guò)
5、簡(jiǎn)單的從一個(gè)對(duì)象原型向另一個(gè)對(duì)象原型復(fù)制方法而實(shí)現(xiàn)的。functioninit(){varperson={};//等同于varperson=newObject();person.getName=function(){alert("personname");};person.getAge=function(){alert("personage");};//創(chuàng)建另一個(gè)對(duì)象varstudent={};student.getStuNum=function(){alert("studentstuNum");};//創(chuàng)建其本身的方法student.ge
6、tName=person.getName;person.getName=function(){alert("person1name");};student.getAge=person.getAge;student.getName();person.getName();}對(duì)象是什么?數(shù)組的兩種實(shí)現(xiàn)方案順序數(shù)組、散列數(shù)組(key,value)對(duì)象=關(guān)聯(lián)數(shù)組=屬性包=存儲(chǔ)體對(duì)象只有成員訪問(wèn)操作原型/對(duì)象屬性包原型只存在于function中,它實(shí)質(zhì)就是一個(gè)對(duì)象被創(chuàng)建后引擎默認(rèn)創(chuàng)建一個(gè)空的prototype對(duì)象,既然對(duì)象是屬性包那么原型也就是一個(gè)屬性
7、包。原型中讀的時(shí)候從原型鏈上讀,寫(xiě)的時(shí)候往自己里面寫(xiě)。functionObect2(){}functionObject3(){}Object3.prototype=newObject2();Object.propertype.foo=…aObj=newObject3();aObj.foo()Object2.prototype.foo=…aObj.foo();對(duì)象成員你已經(jīng)理解了一些簡(jiǎn)單的老函數(shù)如alert(),但是當(dāng)你使用document的body屬性或者document的getElementById()方法時(shí),你時(shí)在訪問(wèn)document對(duì)
8、象的一個(gè)成員。以上屬性和方法都被稱(chēng)為對(duì)象的成員,因?yàn)樗麄兌紡膶儆诟笇?duì)象,這個(gè)父對(duì)象就是上面例子中的document。其中body時(shí)屬性getElementById是方法。實(shí)際上屬