2020亚洲欧美国产日韩,精品露脸国产偷人在视频,后入内射无码人妻一区,香港三级韩国三级日本三级

您當前的位置:首頁 > 新聞資訊 > 公司動態(tài) > 正文

【新東網(wǎng)技術(shù)大咖帶您走進JavaScript】微軟為什么會三次敗給JavaScript

發(fā)布時間: 2016-09-02 10:57:31  
分享到:

 

文/王龍翔  通信研發(fā)部

 

 
 
 
專欄介紹

新東網(wǎng)自2001年成立以來,掌握大數(shù)據(jù)、云計算、通信、物聯(lián)網(wǎng)及區(qū)塊鏈等領(lǐng)先信息技術(shù),擁有一支逾16年經(jīng)驗的強大IT團隊。為沉淀企業(yè)技術(shù)實力,繼續(xù)發(fā)揮行業(yè)優(yōu)勢,《東網(wǎng)快訊》特邀新東網(wǎng)技術(shù)大咖帶您走進這些先進信息技術(shù),揭秘新東網(wǎng)16年來的技術(shù)成果,每周五發(fā)布。

 

在開始我們的話題之前,我們首先來認識一下JavaScript。

 

1、 JavaScript是門腳本語言,同時也是一門具有面向?qū)ο筇匦缘木幊?,語法擴展特性很靈活的設(shè)計語言。

 

2、  JavaScript有委托,有事件,有異常處理,對象模型也很豐富。雖然不能繼承,不過對象都可以無限擴展,有無繼承也沒那么多的意義了。

 

3、 瀏覽器市場競爭日趨白熱化,不管是IE9,FireFox X還是Chrome X,競爭的焦點都是速度,速度的核心自然是Script執(zhí)行速度。

 

4、 從創(chuàng)立至今,微軟從未被對手真正打敗過,卻三次敗給了JavaScript,承認了JS在Web前端的獨霸地位。第一次是微軟在Asp.Net中忍痛拋棄了親生孩子--VBScript,全面支持JS;第二次是匆忙發(fā)布Ajax Extensions系列組件;第三次VS2008中集成了JQuery和代碼提示為標志,Asp.Net大有融入富客戶端之趨勢。

 

通過以上幾點,相信大家都不相信JavaScript在這個行業(yè)里的重要性。下面我們來了解一下JavaScript的設(shè)計模式:

 

一、 工廠模式

 

雖然Object構(gòu)造函數(shù)或?qū)ο笞置媪慷伎梢杂脕韯?chuàng)建單個對象,但這些方式有個明顯的缺點:使用同一個接口創(chuàng)建很多對象,會產(chǎn)生大量的重復(fù)代碼。

 

下面我們來改變代碼的寫法試試:

 

 

函數(shù)createPerson()能夠根據(jù)接受的參數(shù)來構(gòu)建一個包含所有必要信息的Person對象??梢詿o數(shù)次的調(diào)用這個函數(shù),而每次它都會返回一個包含三個屬性一個方法的對象。

 

工廠模式雖然解決了創(chuàng)建多個相似對象的問題,但卻沒有解決對象識別的問題(即怎樣知道一個對象的類型)。我們接下來了解構(gòu)造方法,把每次的參數(shù)進行在一個特定的屬性內(nèi)封裝起來傳遞值可以嗎?

 

二、 構(gòu)造方法模式

 

 

在這個例子中,我們是否想起了javase里bean的構(gòu)造方法呢?在這里Person()函數(shù)取代了createPerson函數(shù)。我們注意到,Person()中的代碼除了與createPerson()中相同的部分外,還存在以下不同之處:


(1)沒有顯式的創(chuàng)建對象;


(2)直接將屬性和方法賦予了this對象;


(3)沒有return語句。

 

三、 原型模式

 

 

雖然可以通過對象實例訪問保存在原型中的值,但卻不能通過對象實例重寫原型中的值。如果我們在實例中添加一個屬性,而該屬性與實例原型中的一個屬性同名,那我們就在實例中創(chuàng)建該屬性,該屬性將會屏蔽原型中的屬性。

 

四、 原型的動態(tài)性

 


 

以上代碼先創(chuàng)建了Person的一個實例,并將其保存在person中,然后,下一條語句在Person.prototype中添加了一個方法sayHi().即使person實例是在添加新方法之前創(chuàng)建的,但它仍然可以訪問這個新方法。


盡管可以隨時為原型添加屬性和方法,并且個性能夠立即在所有對象實例中反映出來,但如果是重寫整個原型對象,那么情況就不一樣了。我們知道,調(diào)用構(gòu)造函數(shù)時會為實例添加一個指向最初原型的[[Prototype]]指針,而把原型修改為另外一個對象就等于切斷了構(gòu)造函數(shù)與最初原型之間的聯(lián)系。請記?。簩嵗械闹羔槂H指向原型,而不指向構(gòu)造函數(shù)??聪旅娴睦樱?/span>

 

 

五、 寄生構(gòu)造方法模式

 

 

通常,在前述幾種模式都不適用的情況下,可以使用寄生(parasitic)構(gòu)造函數(shù)模式。這種模式的基本思想是創(chuàng)建一個函數(shù),該函數(shù)的作用僅僅是封裝創(chuàng)建對象的代碼,然后再返回新創(chuàng)建的對象。但從表面上看,這個函數(shù)又很像是典型的構(gòu)造函數(shù)。

 

在上面這段代碼中,通過在構(gòu)造函數(shù)的末尾添加一個return語句,可以重寫調(diào)用構(gòu)造函數(shù)時返回的值。這個模式可以在特殊情況下用來為對象創(chuàng)建構(gòu)造函數(shù)。假設(shè)我們想創(chuàng)建一個具有額外方法的特殊數(shù)組,由于不能直接修改Array構(gòu)造函數(shù),因此可以使用下面的寫法。

 

 

看完了JavaScript的幾種設(shè)計模式后,大家是不是對JavaScript的寫法很奇怪呢?

JavaScript的符號也很多,括號一旦寫錯,可能會引發(fā)災(zāi)難性的錯誤。所以,JavaScript是一個細活,喜歡的朋友一定要養(yǎng)成良好的編碼習(xí)慣。對于復(fù)雜的業(yè)務(wù)JavaScript完全可以做的來。JavaScript 是一門靈活的語言,很多寫法都可以發(fā)揮自己的創(chuàng)新思維來寫,其靈活性同樣也帶來了很多問題。

 

在未來的日子里,Html5的快速發(fā)展之勢必會讓JavaScript的市場份額越來越大。喜歡前端的朋友可以一起來開拓、研究。

 

分享到:
地址:福建省福州市銅盤路軟件大道89號軟件園A區(qū)26號樓 電話:0591-83519233 傳真:0591-87882335 E-mail:doone@doone.com.cn
版權(quán)所有 新東網(wǎng)科技有限公司 閩ICP備07052074號-1 閩公網(wǎng)安備 35010202001006號