亚洲精品免播放器在线观看-久久啊-久久观看视频-日韩精品亚洲专区在线电影不卡-在线观看免费a∨网站-在线观看毛片网站

推廣 熱搜: 廣場  Java  app  Word  營業(yè)  微信公眾號  北京代理記賬  商城  代理記賬  商標(biāo)交易 

javascript轉(zhuǎn)換為java代碼 javaweb項(xiàng)目java后臺獲取前臺js上傳文件的路徑?

   2023-04-28 企業(yè)服務(wù)招財(cái)貓140
核心提示:javaweb項(xiàng)目java后臺獲取前臺js上傳文件的路徑?如果通過servelet讀取上傳文件路徑,代碼如下,我在項(xiàng)目中用過:diskfileitemcfactorydiifNewdiskfileit

javaweb項(xiàng)目java后臺獲取前臺js上傳文件的路徑?

如果通過servelet讀取上傳文件路徑,代碼如下,我在項(xiàng)目中用過:

diskfileitemcfactorydiifNewdiskfileitemcfactory()(32*1024)(NewFile(tmpdir))//TT使用上面的工廠實(shí)例化上傳組件Servlet文件上傳SFUNewServlet文件上傳(diif)。(MAX_SIZE)ttListfilelist(request)ttif(filelistnull||()0){thrownewExc

Javascript是面向?qū)ο筮€是基于對象?

什么是面向?qū)ο笤诰幊痰氖澜缋铮幸环N思想非常重要,那就是面向?qū)ο蟮乃季S。掌握了這個(gè)思路,就意味著你不再是一個(gè)程序員新手,開始向開發(fā)者的目標(biāo)邁進(jìn)了。

那么,到底什么是面向?qū)ο蟮乃季S呢?說到這,我可以告訴你這個(gè)東西的來歷。以前的編程是面向過程的。那么什么是面向過程的呢?之前在網(wǎng)上看到一句話,覺得形容的很好。讓我借一下。

一般來說,如果現(xiàn)在有人讓你把大象放進(jìn)冰箱,我們?nèi)绾斡妹嫦蜻^程的方法來做?我們可以把它分成以下幾個(gè)步驟:

1.打開冰箱門。

2.把大象放進(jìn)冰箱。

3.關(guān)上冰箱門。

我們程序員會把這三個(gè)步驟寫成三個(gè)函數(shù):

()

2.putElephantIntoFridge()

()

然后我們可以依次調(diào)用這些函數(shù)。嗯,你以為可以下班了,但是過幾天,你會發(fā)現(xiàn)這種需求會演變成很多奇怪的趨勢,比如:

請把獅子放進(jìn)冰箱。

請把大象放進(jìn)微波爐里。

請把猴子放在微波爐里。

把其他動物放在冰箱里,但是不要放。;不要關(guān)門。

5.……

諸如此類。這時(shí),要以面向過程的實(shí)現(xiàn)這些需求,就需要重新定義實(shí)現(xiàn)這些需求的功能。這無疑是一件令人抓狂的事情。但是老板和客戶出錢了,你就得做!所以你必須加班,所以你犧牲了你的工作...

所以,為了你的生活,你必須想出一個(gè)方法,不。;不需要每次需要時(shí)都重新定義實(shí)現(xiàn)的功能,也就是說,面向?qū)ο蟆?/p>

我們的想法是:如果每次我們想改變需求,我們不要不要自己去做這些過程,而是指導(dǎo)別人去做,不是嗎?;沒關(guān)系嗎?所以我們面向?qū)ο笏季S的第一個(gè)變化就是實(shí)現(xiàn)。沃克,成為一名指揮家。

如果用定向思維來完成把大象放進(jìn)冰箱的需求。我們的方法變成這樣:

1.找到冰箱,命令冰箱自己打開冰箱門。

2.找到大象,命令它自己進(jìn)入冰箱。

命令冰箱再次自行關(guān)門。

所以實(shí)現(xiàn)這個(gè)需求需要的實(shí)體是:大象和冰箱。我們把出現(xiàn)在實(shí)現(xiàn)需求中的實(shí)體稱為對象。大象要能自己進(jìn)入冰箱,冰箱要能自己開關(guān)門。我們稱之為對象的進(jìn)入冰箱、開門和關(guān)門的能力,通常是用編程方法來表達(dá)的。

所以總結(jié)一下:

1.面向過程是實(shí)現(xiàn)需求的第一步,任何工作都需要自己去做。

2.面向?qū)ο笠馕吨岩磺卸冀唤o能做的人。

所以現(xiàn)在的問題是,如果需求變成了上面說的那些,面向?qū)ο笤趺唇鉀Q問題?我們現(xiàn)在要做的是分析需求中出現(xiàn)的對象(實(shí)體),然后賦予它們相應(yīng)的能力。

在新的需求中,大象、獅子和猴子應(yīng)該被放進(jìn)冰箱和微波爐。這時(shí),這里出現(xiàn)的物體(實(shí)體)是:動物和容器。動物需要的方法(能力)是進(jìn)入容器,容器需要的方法(能力)是開關(guān)門。

因此,上述所有要求都可能變成:

1.[集裝箱]開門。

2.[動物]進(jìn)入[容器]。

3.關(guān)閉[容器](或者如果需要關(guān)門,可以省略這一步)

所以這樣一來,我們就不不需要重復(fù)定義函數(shù)來實(shí)現(xiàn)這些需求。甚至在未來,需求變成了把動物從容器里拿出來,我們只要在動物物體上拓展把動物從容器里拿出來的方法,就可以快速完成需求。這個(gè)時(shí)候,你犧牲工作的幾率就小多了。

如何實(shí)現(xiàn)面向?qū)ο?/p>

說了這么多,大家大概也能明白什么是面向?qū)ο罅恕D敲慈绾斡胘s寫代碼實(shí)現(xiàn)面向?qū)ο竽兀?/p>

在Javascript中,我們使用構(gòu)造函數(shù)來創(chuàng)建對象。

函數(shù)大象(){

}

大象會有一些獨(dú)特的數(shù)據(jù),比如它的體重、品種、年齡等等。我們稱這些獨(dú)特的數(shù)據(jù)為:屬性。每頭大象的數(shù)據(jù)就不一樣了。這種差異在代碼中是如何體現(xiàn)的?

功能象(年齡、體重、類型){

}

我們將每個(gè)數(shù)據(jù)作為形式參數(shù)傳入構(gòu)造函數(shù),然后在創(chuàng)建時(shí)決定每個(gè)大象的實(shí)際數(shù)據(jù)。最終的構(gòu)造函數(shù)被寫成:

功能象(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

}

如果我們想要一頭大象,我們要做的就是只是用新建的創(chuàng)建一個(gè)對象。

//這是一頭2歲重200kg的非洲象。

Varele1新象(2,200kg,非洲象)

//這是一頭3歲的美國大象,體重250kg。

Varele2新象(3,250kg,美國象)

現(xiàn)在大象有了,我們應(yīng)該教大象進(jìn)入容器的能力。這是方法。主要的編寫方法是將這些方法編寫到構(gòu)造函數(shù)中。

功能象(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

this.enterContainer函數(shù)(){}

}

大象造好了,接下來要做的就是把冰箱變成一個(gè)物體。我們還為冰箱寫了一個(gè)構(gòu)造函數(shù)。

功能冰箱(){

}

同樣,冰箱這個(gè)對象也有其獨(dú)特的屬性(數(shù)據(jù)),比如冰箱的高度和寬度。我們還將這些屬性寫入構(gòu)造函數(shù)。

功能冰箱(寬、高){

寬度寬度

這個(gè)高度高度

}

現(xiàn)在根據(jù)需求,冰箱應(yīng)該有開關(guān)門的方法,我們也寫在構(gòu)造函數(shù)上。

功能冰箱(寬、高){

寬度寬度

這個(gè)高度高度

函數(shù)(){}

函數(shù)(){}

}

此時(shí),我們需要下面的代碼來完成"把大象放進(jìn)冰箱"

//1找一個(gè)冰箱物體,這個(gè)物體的寬度和高度足以把大象放進(jìn)去。

var冰箱貼新款冰箱貼(4m,4m)

//2給冰箱一個(gè)開門指令。

()

//3找到一個(gè)大象對象。

Var大象新象(2,200kg,非洲象)

//4給大象下達(dá)指令進(jìn)入冰箱。

elephant.enterContainer()

//5向冰箱發(fā)出關(guān)閉指令。

()

但是這個(gè)時(shí)候,我們要實(shí)現(xiàn)把獅子放進(jìn)冰箱的需求,就要寫一段代碼,描述獅子的屬性和方法。而這個(gè)代碼幾乎和描述大象的代碼一模一樣。

功能獅子(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

this.enterContainer函數(shù)于(){}

}

這時(shí)我們分析,無論大象、獅子、猴子的屬性(年齡、體重、各種類型)和方法(進(jìn)入容器)是否相同,這些都是我們需要的動物,所以讓讓我們直接寫一個(gè)描述動物的代碼。

功能動物(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

this.enterContainer函數(shù)(){}

}

當(dāng)我們想把大象放進(jìn)冰箱時(shí):

Varele新動物(2,250kg,非洲象)

ele.enterContainer()

當(dāng)我們想把獅子放進(jìn)冰箱時(shí):

變異獅子新動物(2250公斤,美洲獅)

lion.enterContainer()

此時(shí),不需要重復(fù)編寫代碼來達(dá)到類似的要求。但這時(shí)有同學(xué)想說,動物中猴子會爬樹,大象會如果要求猴子爬樹,can為什么我們不在動物構(gòu)造器中增加一個(gè)爬樹的方法呢?這顯然是合理的!

當(dāng)然不是!在解決這個(gè)同學(xué)之前的問題,讓讓我們做個(gè)總結(jié)。只是為了解決我們國家把動物放進(jìn)冰箱的問題,我們把面向過程的方法改成了面向?qū)ο蟮姆椒āN覀冊谏厦娴拇a中只使用了面向?qū)ο笏枷氲牡谝粋€(gè)特性:封裝。所謂封裝,就是把對象(需求中的實(shí)體)的屬性(特征)和方法(能力)抽象出來,形成一個(gè)又一個(gè)的分類。在js中,es6之前沒有類的概念,所以我們用構(gòu)造函數(shù)來表示每個(gè)分類。抽象對象,只要你想用,就用構(gòu)造函數(shù)里的new操作,新建一個(gè)。

繼承

接下來解決猴子爬樹的問題。當(dāng)然,要解決這個(gè)問題,我們需要利用面向?qū)ο笏季S的另一個(gè)特性:繼承。繼承意味著子類可以享受父類的屬性和方法(從這里開始不再解釋類似的屬性基本概念)。那么什么是子類和父類呢?為了解決把動物放入冰箱的問題,我們定義了一個(gè)動物構(gòu)造器,我們理解為父類,然后提出這個(gè)問題:不是所有的動物都有相同的方法。猴子會爬樹,但大象會。;t.這個(gè)時(shí)候我們需要重新定義猴子的構(gòu)造函數(shù)。我們把這種猴子理解為一個(gè)子類。

功能猴(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

函數(shù)(){}

this.enterContain:原型。讓■首先在控制臺中輸出一個(gè)構(gòu)造函數(shù):

console.dir(數(shù)組)

此時(shí),在控制臺中,我們可以看到數(shù)組構(gòu)造函數(shù)有一個(gè)prototype屬性。這個(gè)屬性就是我們所說的原型。

通過擴(kuò)展這個(gè)原型屬性,我們發(fā)現(xiàn)通常使用的數(shù)組的方法都是從這個(gè)原型派生出來的。換句話說,原型方法可以由實(shí)例對象共享。

然后我們會用原型來解決猴子代碼重復(fù)太多的問題。我們發(fā)現(xiàn)動物構(gòu)造函數(shù)和猴子構(gòu)造函數(shù)都需要一個(gè)函數(shù)來進(jìn)入enterContainer。為了去掉這個(gè)重復(fù)的代碼,我們在Animal這個(gè)相當(dāng)父類的構(gòu)造函數(shù)中聲明,將Monkey的原型指向Animal的一個(gè)實(shí)例。

功能動物(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

this.enterContainer函數(shù)(){

Console.log(進(jìn)入容器)

}

}

功能猴(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

函數(shù)(){}

}

新動物()

此時(shí),我們新建了一個(gè)Monkey實(shí)例,并發(fā)現(xiàn)這個(gè)實(shí)例可以調(diào)用容器方法。

Var猴新猴(2,25kg,金絲猴)

monkey.enterContainer()

此時(shí),進(jìn)入容器的方法enterContainer就可以共享了。但是這種寫作有一個(gè)缺點(diǎn),我們寫的方法都是寫在構(gòu)造函數(shù)里的,每次我們新建對象都會在內(nèi)存里聲明一個(gè)函數(shù),而且這個(gè)函數(shù)的代碼每次都是一樣的。這是非常不必要的。

Varm1新款猴子(1,15kg,長臂猴子)

Varm2新猴(2,25kg,獼猴)

console.log(m1,m2)

我們模仿原生js的,在原型上寫方法來解決這個(gè)問題。

功能動物(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

}

函數(shù)(){

Console.log(進(jìn)入容器)

}

功能猴(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

}

新動物()

函數(shù)(){

Console.log(小猴子正在爬樹)

}

首先從內(nèi)存分析,對象上沒有對象方法。

然后從控制臺觀察。

Varm1新款猴子(1,15kg,長臂猴子)

Varm2新猴(2,25kg,獼猴)

console.log(m1,m2)

()

()

這是因?yàn)槲覀冊谠蜕蠈懛椒ǎ蜕系姆椒梢员粚?shí)例共享。M1和m2都是猴子的實(shí)例,可以調(diào)用爬樹的方法。

利用構(gòu)造函數(shù)實(shí)現(xiàn)屬性繼承

到目前為止,我們已經(jīng)解決了一些代碼的重用問題。我們發(fā)現(xiàn)有些代碼還是重復(fù)的,這部分代碼是對象的屬性。

在js中,我們可以使用借用構(gòu)造函數(shù)來實(shí)現(xiàn)屬性的繼承。

什么是借款?這其實(shí)是一個(gè)所有函數(shù)都可以調(diào)用的方法:call方法。另一個(gè)功能是在函數(shù)執(zhí)行時(shí)修改這個(gè)點(diǎn)。舉個(gè)簡單的例子:

函數(shù)fn(){

console.log(this)

}

fn()

這段代碼在正常情況下的結(jié)果是輸出窗口對象。

但是如果我們用借用的方法:

函數(shù)fn(){

consol:小明})

控制臺中的輸出是:我們正在使用call方法的第一個(gè)參數(shù)。利用這個(gè)特性,我們可以借用構(gòu)造函數(shù)。

具體代碼如下

功能動物(年齡、體重、類型){

年齡這個(gè)重量重量

這種類型

}

功能猴(年齡、體重、類型){

(這個(gè),年齡,體重,類型)

}

至此,Monkey中重復(fù)的屬性代碼沒有了。那么讓我們讓我們試試Monkey的一個(gè)實(shí)例是否會有這些屬性。

Varm1新款猴子(1,15kg,長臂猴子)

Varm2新猴(2,25kg,獼猴)

console.log(m1,m2)

所以最后,我們的代碼是這樣寫的

功能動物(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

}

函數(shù)(){

Console.log(進(jìn)入容器)

}

功能猴(年齡、體重、類型){

(這個(gè),年齡,體重,類型)

}

新動物()

函數(shù)(){

Console.log(小猴子正在爬樹)

}

這個(gè)時(shí)候,如果是所有動物的方法,我們只需要回到世間。如果是猴子我們將把它寫在世界上。這就是js中實(shí)現(xiàn)定向的過程。我們把以上兩種實(shí)現(xiàn)繼承的稱為:組合繼承。

更簡單的語法實(shí)現(xiàn)面向?qū)ο?/p>

上面寫的是我們在es5標(biāo)準(zhǔn)下的面向?qū)ο筮^程。這個(gè)過程有點(diǎn)麻煩。在es6的新標(biāo)準(zhǔn)下,我們有了更簡單的語法來實(shí)現(xiàn)面向?qū)ο蟆?/p>

類別關(guān)鍵字

首先,讓我們讓我們理解es6中的一個(gè)新關(guān)鍵字:class,它允許我們快速定義類。語法如下:

類別類別名稱{

}

然后在里面寫這個(gè)類的構(gòu)造函數(shù)。

類別類別名稱{

構(gòu)造函數(shù)(){

}

}

例如,我們定義一個(gè)動物類。

動物類{

建造者(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

}

}

當(dāng)我想要一個(gè)動物實(shí)例時(shí),我只需要新的。

Vara1新動物(2,200kg,非洲象)

console.log(a1)

這個(gè)語法的本質(zhì)也是利用函數(shù)和原型來實(shí)現(xiàn)的,所以我想實(shí)現(xiàn)前面的動物和冰箱的問題,如果在這個(gè)新的語法中實(shí)現(xiàn)會更快。

擴(kuò)展關(guān)鍵字

在新語法的情況下,如果我們想實(shí)現(xiàn)繼承,我們只需要使用一個(gè)新的。關(guān)鍵詞"擴(kuò)展"會的。語法如下:

類子類擴(kuò)展父類{

構(gòu)造函數(shù)(){}

}

但重要的是,在這種新語法下實(shí)現(xiàn)的繼承,必須先在子類的構(gòu)造函數(shù)中調(diào)用父類的構(gòu)造函數(shù)。

類子類擴(kuò)展父類{

構(gòu)造函數(shù)(){

超級()

}

}

所以現(xiàn)在要認(rèn)識到Mokey從動物的遺傳,我們不得不這樣寫。

動物類{

建造者(年齡、體重、類型){

年齡

這個(gè)重量重量

這種類型

}

enterContainer(){

Console.log(進(jìn)入容器)

}

}

類Mokey擴(kuò)展動物{

建造者(年齡、體重、類型){

超級(年齡、體重、類型)

}

climbingTree(){

Console.log(小猴子正在爬樹)

}

}

標(biāo)簽

面向?qū)ο蟮乃枷肫鋵?shí)并不難,基本上所有的高級語言都遵循這個(gè)思想。也就是說,我們在使用一種語言的時(shí)候,大部分都是調(diào)用該語言的API,這些API基本上都是用來調(diào)用對象的方法或者屬性的。要調(diào)用對象的方法或?qū)傩裕覀儽仨毷紫日业綄ο蟆F鋵?shí)找到對象,然后調(diào)用對象的方法和屬性的行為,就是我們在用面向?qū)ο蟮乃季S解決問題。

所以我對面向?qū)ο蟮囊蓡柺?所謂面向?qū)ο缶褪钦业揭粋€(gè)對象,然后使用它的方法和屬性。

但是不同語言的實(shí)現(xiàn)過程是不一樣的。js中有兩種不同的實(shí)現(xiàn)方法:es5和es6,對js來說有好有壞。好處是新的語法標(biāo)準(zhǔn)不斷出來,證明語言還在蓬勃發(fā)展。缺點(diǎn)是對新手不友好。但值得肯定的是,js未來的勢頭非常好。

 
反對 0舉報(bào) 0 收藏 0 打賞 0評論 0
 
更多>同類資訊
推薦圖文
推薦資訊
點(diǎn)擊排行
合作伙伴
網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系方式  |  使用協(xié)議  |  版權(quán)隱私  |  網(wǎng)站地圖  |  排名推廣  |  廣告服務(wù)  |  積分換禮  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報(bào)  |  冀ICP備2023006999號-8
 
主站蜘蛛池模板: 国产免费一区二区三区免费视频 | 草湿影院 | 精品国产欧美一区二区三区成人 | 国产亚洲欧美日韩俺去了 | 欧美2区 | 一边摸一边叫床一边爽 | 亚洲第一页在线观看 | 日本午夜在线观看 | 亚洲va国产va欧美va综合 | 欧美色老头 | 欧美日韩色 | 免费精品国产日韩热久久 | 热九九精品 | 免费观看成人www精品视频在线 | 日韩欧美视频一区二区三区 | 国产在线精品一区二区夜色 | 美女视频黄a视频全免费网站色 | 欧美精品国产综合久久 | 久久国产成人精品 | 国产精品欧美日韩 | 热久久国产欧美一区二区精品 | 日韩在线视频网 | 国产区第一页 | 欧美一区二区视频 | 亚洲一区二区综合 | 国产高清一区二区三区视频 | 日韩一级精品视频在线观看 | 亚洲伊人久久综合一区二区 | 国产亚洲欧美在线人成aaaa | 亚洲一区二区精品视频 | 一区一精品 | 在线一区观看 | 亚洲国产精品二区久久 | 在线视频亚洲欧美 | 日韩午夜视频在线观看 | 国产免费一区二区三区免费视频 | 欧美日韩高清完整版在线观看免费 | 国产成人久久一区二区三区 | 国产传媒一区二区三区四区五区 | 手机看片91精品一区 | 一区二区国产在线观看 |