亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 web前端 js教程 javascript object oriented 面向?qū)ο缶幊坛醪絖基礎(chǔ)知識(shí)

javascript object oriented 面向?qū)ο缶幊坛醪絖基礎(chǔ)知識(shí)

May 16, 2016 pm 07:21 PM
javascript object

用?new?Object()?來創(chuàng)建對(duì)象
在javascript里有幾種創(chuàng)建對(duì)象的方法,在不同的場(chǎng)合可用不同的方法.最簡(jiǎn)單的就是用?new?操作符,例如:

復(fù)制代碼 代碼如下:
<script> <BR><!-- <br><br>person = new Object() <BR>person.name = "Tim Scarfe" <BR>person.height = "6Ft" <br><br>person.run = function() { <BR>this.state = "running" <BR>this.speed = "4ms^-1" <BR>} <br><br>//--> <BR></script>?


我們?cè)谶@個(gè)例子里定義了person這個(gè)對(duì)象,然后加入了它的屬性和方法.在這個(gè)例子里,自定義的方法里有兩個(gè)屬性.

用文字記號(hào)Literal?Notation創(chuàng)建對(duì)象
用文字記號(hào)也可以創(chuàng)建對(duì)象,但要javascript?1.2以上版本.它的創(chuàng)建形式是多樣的.
復(fù)制代碼 代碼如下:
<script> <BR><!-- <br><br>// Object Literals <br><br>timObject = { <BR>property1 : "Hello", <BR>property2 : "MmmMMm", <BR>property3 : ["mmm", 2, 3, 6, "kkk"], <BR>method1 : function(){alert("Method had been called" + this.property1)} <BR>}; <br><br>timObject.method1(); <BR>alert(timObject.property3[2]) // will yield 3 <br><br>var circle = { x : 0, y : 0, radius: 2 } // another example <br><br>// nesting is no problem. <BR>var rectangle = { <BR>upperLeft : { x : 2, y : 2 }, <BR>lowerRight : { x : 4, y : 4} <BR>} <br><br>alert(rectangle.upperLeft.x) // will yield 2 <br><br>//--> <BR></script>?


文字記號(hào)可是是數(shù)組,也可以是任意的javascript表達(dá)式或值.

用?new?操作符或文字記號(hào)創(chuàng)建一個(gè)自定義對(duì)象都是簡(jiǎn)單的,也是符合邏輯的.但它最大的缺點(diǎn)就是結(jié)果不可復(fù)用.也不能很容易的用不同的版本初始化創(chuàng)建對(duì)象.例如上面?的第一個(gè)例子,如果?person?的?name?不是?"Tim?Scarfe",那樣我們不得不重新定義整個(gè)對(duì)象,僅僅為了適應(yīng)它的一點(diǎn)點(diǎn)改變.

對(duì)象的構(gòu)造和原型

????在OOP的世界里,用先前的方法定義對(duì)象在許多場(chǎng)合都有限制.我們需要一種創(chuàng)建對(duì)象的方法,類型可以被多次使用而不用重新定義.對(duì)象在實(shí)例化時(shí)每次都可以按需分配不同的值.實(shí)現(xiàn)這個(gè)目標(biāo)的標(biāo)準(zhǔn)方法是用對(duì)象構(gòu)造器函數(shù).

???一個(gè)對(duì)象構(gòu)造器只不過是個(gè)有規(guī)則的javascript函數(shù),它就象一個(gè)容器(定義參數(shù),調(diào)用其他函數(shù)等等).它們兩者所不同的是構(gòu)造器函數(shù)是由?new?操作符調(diào)用的.(你將在下面的例子中看到).基于函數(shù)語法形式的對(duì)象定義,我們可以使它工作得最好.


讓我們用現(xiàn)實(shí)世界中的貓來舉個(gè)例子.貓的?name?和?color?是貓的屬性.meeyow(貓叫)是它的一個(gè)方法.重要的是任何不同的貓都可能有不同的?name?和?meeyow?的叫聲.為了建立適應(yīng)這些特征的對(duì)象類,我們將使用對(duì)象構(gòu)造器.?
復(fù)制代碼 代碼如下:
<script> <BR><!-- <br><br>function cat(name) { <BR>this.name = name; <BR>this.talk = function() { <BR>alert( this.name + " say meeow!" ) <BR>} <BR>} <br><br>cat1 = new cat("felix") <BR>cat1.talk() //alerts "felix says meeow!" <br><br>cat2 = new cat("ginger") <BR>cat2.talk() //alerts "ginger says meeow!" <br><br>//--> <BR></script>


在這里,函數(shù)?cat()?是一個(gè)對(duì)象構(gòu)造器,它的屬性和方法在函數(shù)體里用this來定義,用對(duì)象構(gòu)造器定義的對(duì)象用?new?來實(shí)例化.主意我們?nèi)绾畏浅H菀椎亩x多個(gè)cat?的實(shí)例.每一個(gè)都有自己的名字,這就是對(duì)象構(gòu)造器帶給我們的靈活性.
構(gòu)造器建立了對(duì)象的藍(lán)圖.并不是對(duì)象本身.
在原型里增加方法.
在上面我們看到的例子里,對(duì)象的方法是在構(gòu)造器里定義好的了.另外一種實(shí)現(xiàn)的途徑是通過原型(prototype).xxx
原型是javascript繼承的一種形式.我們可以為對(duì)象定義好后,再創(chuàng)造一個(gè)方法.原來所有對(duì)象的實(shí)例都將共享.
讓我們來擴(kuò)展最初的?cat?對(duì)象.增加一個(gè)改名的方法.用?prototype?的方式.?
復(fù)制代碼 代碼如下:
<script> <BR><!-- <br><br>cat.prototype.changeName = function(name) { <BR>this.name = name; <BR>} <br><br>firstCat = new cat("pursur") <BR>firstCat.changeName("Bill") <BR>firstCat.talk() //alerts "Bill says meeow!" <br><br>//--> <BR></script>


就象你所看到的.我們僅只用了?關(guān)鍵字?prototype?實(shí)現(xiàn)了在對(duì)象定義后馬上增加了changeName方法.這個(gè)方法被所有的實(shí)例共享.
用原型(prototype)?重載?javascript?對(duì)象
原型?在自定義對(duì)象和有選擇性的重載對(duì)象上都可以工作.比如?Date()?或?String?這可能是無止境的.
子類和超類
在JAVA?和C++里,有關(guān)于類層次的外在概念.每一個(gè)類能有一個(gè)角色.
In?Java?and?C++,?there?is?an?explicit?concept?of?the?class?hierarchy.?i.e.?Every?class?can?have?a?super?class?from?which?it?inherits?properties?and?methods.?Any?class?can?be?extended,?or?sub-classed?so?the?resulting?subclass?can?inherit?its?parent's?behavior.?As?we?have?seen,?javascript?supports?prototype?inheritance?instead?of?class?based.?It's?possible?for?inheritance?to?happen?other?ways,?however.

The?following?is?an?example?of?inheritance?through?functions.

下面一個(gè)例子演示了如何繼承通過function?.?
復(fù)制代碼 代碼如下:
<script> <BR><!-- <br><br>// thanks to webreference <br><br>function superClass() { <BR>this.supertest = superTest; //attach method superTest <BR>} <br><br>function subClass() { <BR>this.inheritFrom = superClass; <BR>this.inheritFrom(); <BR>this.subtest = subTest; //attach method subTest <BR>} <br><br>function superTest() { <BR>return "superTest"; <BR>} <br><br>function subTest() { <BR>return "subTest"; <BR>} <br><br><BR>var newClass = new subClass(); <br><br>alert(newClass.subtest()); // yields "subTest" <BR>alert(newClass.supertest()); // yields "superTest" <br><br>//--> <BR></script>

基于繼承的原型是遙遠(yuǎn)的.為?javascript?應(yīng)用程序在許多場(chǎng)合.
(基于原型的繼承在許多javascript的應(yīng)用場(chǎng)合是非常有用的.)

對(duì)象作為聯(lián)合數(shù)組
正如你所知,?(.)操作符能夠用來存儲(chǔ).[]?操作符用來操作數(shù)組.
<script> <BR><!-- <br><br>// These are the same <BR>object.property <BR>object["property"] <br><br>//--> <BR></script>

<script> <BR><!-- <BR>function Circle (xPoint, yPoint, radius) { <BR>this.x = xPoint; <BR>this.y = yPoint; <BR>this.r = radius; <BR>} <br><br>var aCircle = new Circle(5, 11, 99); <BR>alert(aCircle.x); <BR>alert(aCircle["x"]); <BR>//--> <BR></script>
How?do?I?loop?through?properties?in?an?object?
You?need?to?use?a?for/in?loop.
我們可以通過for?in循環(huán)來遍歷對(duì)象的屬性。

<script> <BR><!-- <br><br>var testObj = {<BR>prop1 : "hello", <BR>prop2 : "hello2", <BR>prop3 : new Array("hello",1,2) <BR>} <BR>for(x in testObj) alert( x + "-" + testObj[ x ] ) <BR>//--> <BR></script>
<script> <BR><!-- <BR>var Circle = { x : 0, y : 1, radius: 2 } // another example <br><br>for(p in Circle) <BR>alert( p + "-" + Circle[ p ] ) <BR>//--> <BR></script>


The?important?thing?to?notice?is?that?in?the?object?syntax?the?property?is?an?identifier,?whereas?in?the?array?syntax,?it's?a?string.?The?obvious?benefits?of?using?an?array?syntax?to?access?an?object?is?because?of?the?literal?data?type,?you?can?easily?concat?strings?and?play?around?with?them?to?access?an?object.?For?this?to?work?with?the?standard?syntax,?an?eval()?would?need?to?be?used.
應(yīng)該值得注意的是對(duì)象的屬性只是一個(gè)標(biāo)識(shí)字符,盡管在一個(gè)數(shù)組里是一個(gè)字符串,因?yàn)槭且粋€(gè)literal的數(shù)據(jù)類型,所以有利于使用數(shù)組的方式的操作一個(gè)對(duì)象。你也可以很容易的存取一個(gè)對(duì)象在標(biāo)準(zhǔn)的語句中。這個(gè)時(shí)候eval()函數(shù)可能用得到。
<script> <BR><!-- <br><br>testObj = { <BR>prop1 : "hello", <BR>prop2 : "hello2", <BR>prop3 : new Array("helloa",1,2) <BR>} <br><br>for(x in testObj) alert( x + "-" + testObj[ x ] ) <BR>var prop3 = testObj["prop3"]; <BR>alert(prop3); <BR>//alert(prop[1]); <BR>alert(typeof(prop3)); <BR>alert(eval(prop3)[1]); <BR>alert(typeof(eval(prop3)[1])); <br><br>//--> <BR></script>
網(wǎng)上的東西錯(cuò)誤的太多了,jb51.net修正后的測(cè)試下

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
WebSocket與JavaScript:實(shí)現(xiàn)即時(shí)監(jiān)控系統(tǒng)的關(guān)鍵技術(shù) WebSocket與JavaScript:實(shí)現(xiàn)即時(shí)監(jiān)控系統(tǒng)的關(guān)鍵技術(shù) Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實(shí)現(xiàn)即時(shí)監(jiān)控系統(tǒng)的關(guān)鍵技術(shù)引言:隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,即時(shí)監(jiān)控系統(tǒng)在各個(gè)領(lǐng)域中得到了廣泛的應(yīng)用。而實(shí)現(xiàn)即時(shí)監(jiān)控的關(guān)鍵技術(shù)之一就是WebSocket與JavaScript的結(jié)合使用。本文將介紹WebSocket與JavaScript在即時(shí)監(jiān)控系統(tǒng)中的應(yīng)用,並給出程式碼範(fàn)例,詳細(xì)解釋其實(shí)作原理。一、WebSocket技

如何使用WebSocket和JavaScript實(shí)現(xiàn)線上語音辨識(shí)系統(tǒng) 如何使用WebSocket和JavaScript實(shí)現(xiàn)線上語音辨識(shí)系統(tǒng) Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實(shí)現(xiàn)線上語音辨識(shí)系統(tǒng)引言:隨著科技的不斷發(fā)展,語音辨識(shí)技術(shù)已成為了人工智慧領(lǐng)域的重要組成部分。而基於WebSocket和JavaScript實(shí)現(xiàn)的線上語音辨識(shí)系統(tǒng),具備了低延遲、即時(shí)性和跨平臺(tái)的特點(diǎn),成為了廣泛應(yīng)用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實(shí)現(xiàn)線上語音辨識(shí)系

如何利用JavaScript和WebSocket實(shí)現(xiàn)即時(shí)線上點(diǎn)餐系統(tǒng) 如何利用JavaScript和WebSocket實(shí)現(xiàn)即時(shí)線上點(diǎn)餐系統(tǒng) Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實(shí)現(xiàn)即時(shí)線上點(diǎn)餐系統(tǒng)介紹:隨著網(wǎng)路的普及和技術(shù)的進(jìn)步,越來越多的餐廳開始提供線上點(diǎn)餐服務(wù)。為了實(shí)現(xiàn)即時(shí)線上點(diǎn)餐系統(tǒng),我們可以利用JavaScript和WebSocket技術(shù)。 WebSocket是一種基於TCP協(xié)定的全雙工通訊協(xié)議,可實(shí)現(xiàn)客戶端與伺服器的即時(shí)雙向通訊。在即時(shí)線上點(diǎn)餐系統(tǒng)中,當(dāng)使用者選擇菜餚並下訂單

JavaScript與WebSocket:打造高效率的即時(shí)天氣預(yù)報(bào)系統(tǒng) JavaScript與WebSocket:打造高效率的即時(shí)天氣預(yù)報(bào)系統(tǒng) Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時(shí)天氣預(yù)報(bào)系統(tǒng)引言:如今,天氣預(yù)報(bào)的準(zhǔn)確性對(duì)於日常生活以及決策制定具有重要意義。隨著技術(shù)的發(fā)展,我們可以透過即時(shí)獲取天氣數(shù)據(jù)來提供更準(zhǔn)確可靠的天氣預(yù)報(bào)。在本文中,我們將學(xué)習(xí)如何使用JavaScript和WebSocket技術(shù),來建立一個(gè)高效的即時(shí)天氣預(yù)報(bào)系統(tǒng)。本文將透過具體的程式碼範(fàn)例來展示實(shí)現(xiàn)的過程。 We

如何使用WebSocket和JavaScript實(shí)現(xiàn)線上預(yù)約系統(tǒng) 如何使用WebSocket和JavaScript實(shí)現(xiàn)線上預(yù)約系統(tǒng) Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實(shí)現(xiàn)線上預(yù)約系統(tǒng)在當(dāng)今數(shù)位化的時(shí)代,越來越多的業(yè)務(wù)和服務(wù)都需要提供線上預(yù)約功能。而實(shí)現(xiàn)一個(gè)高效、即時(shí)的線上預(yù)約系統(tǒng)是至關(guān)重要的。本文將介紹如何使用WebSocket和JavaScript來實(shí)作一個(gè)線上預(yù)約系統(tǒng),並提供具體的程式碼範(fàn)例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進(jìn)行全雙工

簡(jiǎn)易JavaScript教學(xué):取得HTTP狀態(tài)碼的方法 簡(jiǎn)易JavaScript教學(xué):取得HTTP狀態(tài)碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學(xué):如何取得HTTP狀態(tài)碼,需要具體程式碼範(fàn)例前言:在Web開發(fā)中,經(jīng)常會(huì)涉及到與伺服器進(jìn)行資料互動(dòng)的場(chǎng)景。在與伺服器進(jìn)行通訊時(shí),我們經(jīng)常需要取得傳回的HTTP狀態(tài)碼來判斷操作是否成功,並根據(jù)不同的狀態(tài)碼來進(jìn)行對(duì)應(yīng)的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態(tài)碼,並提供一些實(shí)用的程式碼範(fàn)例。使用XMLHttpRequest

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個(gè)新的節(jié)點(diǎn)。這個(gè)方法需要兩個(gè)參數(shù):要插入的新節(jié)點(diǎn)和參考節(jié)點(diǎn)(即新節(jié)點(diǎn)將要插入的位置的節(jié)點(diǎn))。

如何在JavaScript中取得HTTP狀態(tài)碼的簡(jiǎn)單方法 如何在JavaScript中取得HTTP狀態(tài)碼的簡(jiǎn)單方法 Jan 05, 2024 pm 01:37 PM

JavaScript中的HTTP狀態(tài)碼取得方法簡(jiǎn)介:在進(jìn)行前端開發(fā)中,我們常常需要處理與後端介面的交互,而HTTP狀態(tài)碼就是其中非常重要的一部分。了解並取得HTTP狀態(tài)碼有助於我們更好地處理介面?zhèn)骰氐馁Y料。本文將介紹使用JavaScript取得HTTP狀態(tài)碼的方法,並提供具體程式碼範(fàn)例。一、什麼是HTTP狀態(tài)碼HTTP狀態(tài)碼是指當(dāng)瀏覽器向伺服器發(fā)起請(qǐng)求時(shí),服務(wù)

See all articles