麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

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

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

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

  

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

1.javascript對(duì)類的支持

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

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

? 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 引用類型,每次進(jìn)入函數(shù)體都要重新創(chuàng)建,因此都不一樣。 console.log(a.method === b.method); //false
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91精品欧美一区二区三区 | 日本成人一区二区三区 | 久久激情免费视频 | 欧美日韩成人一区二区 | 欧美一级爱爱 | 国产精品99精品 | 欧美成人视 | 久久久日韩精品一区二区 | 日韩精品中文字幕一区二区三区 | 91性高湖久久久久久久久网站 | 免费视频xxxx | 色玖玖综合 | 国产精品男女 | 国产成人精品自拍视频 | 久久国产精品系列 | 国产精品久久久久久久不卡 | 一级α片免费看刺激高潮视频 | 羞羞答答影院 | 欧美一级视屏 | 91网址在线观看 | 成人免费av在线 | 国内精品伊人久久久久网站 | 一本一本久久a久久精品综合小说 | 色999中文字幕 | 玩偶姐姐 在线观看 | 超碰97人人艹 | 性爱在线免费视频 | 成年人视频免费看 | 午夜精品久久久久久毛片 | 欧美雌雄另类xxxxx | 深夜影院一级毛片 | 热99在线视频 | 一级国产精品一级国产精品片 | 狠狠干91 | 9191色 | 国产亚洲精品综合一区91555 | 久久亚洲精品久久国产一区二区 | 亚洲第一成人在线观看 | 日日草夜夜操 | 黄污免费网站 | 精品三级内地国产在线观看 |