国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript框架設(shè)計之類工廠

2019-11-02 15:54:22
字體:
供稿:網(wǎng)友

 這篇文章主要介紹了javascript框架設(shè)計之類工廠的相關(guān)資料,非常淺顯易懂,有需要的小伙伴可以查看下。

  

類與繼承在javascript的出現(xiàn),說明javascript已經(jīng)達到大規(guī)模開發(fā)的門檻了,在之前是ECMAScript4,就試圖引入類,模塊等東西,但由于過分引入太多的特性,搞得javascript烏煙瘴氣,導(dǎo)致被否決。不過只是把類延時到ES6.到目前為止,javascript還沒有正真意義上的類。不過我們可以模擬類,曾近一段時間,類工廠是框架的標(biāo)配,本章會介紹各種類實現(xiàn),方便大家在自己的框架中或選擇時自己喜歡的那一類風(fēng)格。

1.javascript對類的支持

在其它語言中 ,類的實例都要通過構(gòu)造函數(shù)new出來。作為一個刻意模仿java的語言。javascript存在new操作符,并且所有函數(shù)都可以作為構(gòu)造器。構(gòu)造函數(shù)與普通的方法沒有什么區(qū)別。瀏覽器為了構(gòu)建它繁花似錦的生態(tài)圈,比如Node,Element,HTMLElement,HTMLParagraphElement,顯然使用繼承關(guān)系方便一些方法或?qū)傩缘墓蚕恚谑莏avascript從其它語言借鑒了原型這種機制。Prototype作為一個特殊的對象屬性存在于每一個函數(shù)上。當(dāng)一個函數(shù)通過new操作符new出其“孩子”——“實例”,這個名為實例的對象就擁有這個函數(shù)的Prototype對象所有的一切成員,從而實現(xiàn)實現(xiàn)所有實例對象都共享一組方法或?qū)傩浴6鴍avascript所謂的“類”就是通過修改這個Prototype對象,以區(qū)別原生對象及其其它定義的“類”。在瀏覽器中,node這個類基于Object修改而來的,而Element則是基于Node,而HTMLElement又基于Element....相對我們的工作業(yè)務(wù),我們可以創(chuàng)建自己的類來實現(xiàn)重用與共享。

? 1 2 3 4 5 6 7 8 9 10 11 12 function A(){   } A.prototype = { aa:"aa", method:function(){ } }; var a = new A; var b = new A; console.log(a.aa === b.aa); console.log(a.method === b.method)

一般地,我們把定義在原型上的方法叫原型方法,它為所有的實例所共享,這有好也有不好,為了實現(xiàn)差異化,javascript允許我們直接在構(gòu)造器內(nèi)指定其方法,這叫特權(quán)方法。如果是屬性,就叫特權(quán)屬性。它們每一個實例一個副本,各不影響。因此,我們通常把共享用于操作數(shù)據(jù)的方法放在原型,把私有的屬性放在特權(quán)屬性中。但放于this上,還是讓人任意訪問到,那就放在函數(shù)體內(nèi)的作用域內(nèi)吧。這時它就成為名副其實的私有屬性。

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 function A() { var count = 0; this.aa = "aa"; this.method = function() { return count; } this.obj = {} } A.prototype = { aa:"aa", method:function(){   } }; var a = new A; var b = new A; console.log(a.aa === b.aa);//true 由于aa的值為基本類型,比較值 console.log(a.obj === b.obj) //false 引用類型,每次進入函數(shù)體都要重新創(chuàng)建,因此都不一樣。 console.log(a.method === b.method); //false
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 莱西市| 宜阳县| 潜江市| 武平县| 高尔夫| 越西县| 平山县| 资兴市| 隆尧县| 河源市| 三河市| 道孚县| 新巴尔虎右旗| 阳朔县| 崇州市| 重庆市| 肃宁县| 灵寿县| 合水县| 磐石市| 郧西县| 大田县| 临沂市| 驻马店市| 遂宁市| 镇远县| 石阡县| 城口县| 南汇区| 玛曲县| 成安县| 亳州市| 江安县| 印江| 冕宁县| 咸阳市| 三穗县| 西畴县| 五指山市| 奈曼旗| 手游|