亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS定義類的六種方式詳解

2019-11-20 10:04:52
字體:
來源:轉載
供稿:網友

在前端開發中,經常需要定義JS類。那么在JavaScript中,定義類的方式有幾種,分別是什么呢?本文就JS定義類的六中方式說明如下(案例說明):

1、工廠方式

function Car(){var ocar = new Object;ocar.color = “blue”;ocar.doors = 4;ocar.showColor = function(){document.write(this.color)};return ocar;}var car1 = Car();var car2 = Car();

調用此函數時將創建新對象,并賦予它所有的屬性和方法。使用此函數可以創建2個屬性完全相同的對象。

當然可以通過給它傳遞參數來改版這種方式。

function Car(color,door){var ocar = new Object;ocar.color = color;ocar.doors = door;ocar.showColor = function(){document.write(this.color)};return ocar;}var car1 = Car(“red”,4);var car2 = Car(“blue”,4);car1.showColor() //output:”red”car2.showColor() //output:”blue”

現在可以通過給函數傳遞不同的參數來得到具有不同值的對象。

在前面的例子中,每次調用函數Car(),都要創建showcolor(),意味著每個對象都有一個自己的showcolor()方法。

但是事實上,每個對象斗共享了同一個函數。 雖然可以在函數外定義方法,然后通過將函數的屬性指向該方法。

function showColor(){alert(this.color);}function Car(){var ocar = new Object();ocar.color = color;ocar.doors = door;ocar.showColor = showColor;return ocar;}

但是這樣看起來不像是函數的方法。

2、構造函數方式

構造函數方式同工廠方式一樣簡單,如下所示:

function Car(color,door){this.color = color;this.doors = door;this.showColor = function(){alert(this.color)};}var car1 = new Car(“red”,4);var car2 = new Car(“blue”,4);

可以看到構造函數方式在函數內部沒有創建對象,是用this關鍵字。因為在調用構造函數時已經創建了對象,而在函數內部只能用this來訪問對象屬性。

現在用new來創建對象,看起來像那么回事了!但是它同工廠方式一樣。每次調用都會為對象創建自己的方法。

3、原型方式

該方式利用了對象的prototype屬性。首先用空函數創建類名,然后所有的屬性和方法都被賦予prototype屬性。

function Car(){}Car.prototype.color = “red”;Car.prototype.doors = 4;Car.prototype.showColor = function(){alert(this.color);}var car1 = new Car();var car2 = new Car();

在這段代碼中,首先定義了一個空函數,然后通過prototype屬性來定義對象的屬性。調用該函數時,原型的所有屬性都會立即賦予要創建的對象,所有該函數的對象存放的都是指向showColor()的指針,語法上看起來都屬于同一個對象。

但是這個函數沒有參數,不能通過傳遞參數來初始化屬性,必須要在對象創建后才能改變屬性的默認值。

原型方式有個很嚴重的問題就是當屬性指向的是對象時,如數組。

function Car(){}Car.prototype.color = “red”;Car.prototype.doors = 4;Car.prototype.arr = new Array(“a”,”b”);Car.prototype.showColor = function(){alert(this.color);}var car1 = new Car();var car2 = new Car();car1.arr.push(“cc”);alert(car1.arr); //output:aa,bb,ccalert(car2.arr); //output:aa,bb,cc

這里由于數組的引用值,Car的兩個對象指向的都是同一個數組,所以當在car1添加值后,在car2中也可以看到。

聯合是用構造函數/原型方式就可以像其他程序設計語言一樣創建對象,是用構造函數定義對象的非函數屬性,用原型方式定義對象的方法。

function Car(color,door){this.color = color;this.doors = door;this.arr = new Array(“aa”,”bb”);}Car.prototype.showColor(){alert(this.color);}var car1 = new Car(“red”,4);var car2 = new Car(“blue”,4);car1.arr.push(“cc”);alert(car1.arr); //output:aa,bb,ccalert(car2.arr); //output:aa,bb

5、動態原型方式

動態原型的方式同混合的構造函數/原型方式原理相似。唯一的區別就是賦予對象方法的位置。

function Car(color,door){this.color = color;this.doors = door;this.arr = new Array(“aa”,”bb”);if(typeof Car._initialized == “undefined”){Car.prototype.showColor = function(){alert(this.color);};Car._initialized = true;}}

動態原型方式是使用一個標志來判斷是否已經給原型賦予了方法。這樣可以保證該方法只創建一次

6、混合工廠方式

它的目的師創建假構造函數,只返回另一種對象的新實例。

function Car(){var ocar = new Object();ocar.color = “red”;ocar.doors = 4;ocar.showColor = function(){alert(this.color)};return ocar;}

與工廠方式所不同的是,這種方式使用new運算符。

以上就是全部的創建對象方法。目前使用最廣泛的就是混合構造函數/原型方式,此外,動態原型方式也很流行。在功能上與構造函數/原型方式等價。

以上這篇JS定義類的六種方式詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线免费看| 亚洲欧洲成视频免费观看| 久久精品国产成人精品| 国产亚洲一区精品| 欧美国产日产韩国视频| 亚洲欧美精品在线| 成人激情视频在线播放| 亚洲精品中文字| 91精品国产高清自在线看超| 欧美激情久久久| 97国产精品久久| 韩剧1988在线观看免费完整版| 欧美日韩亚洲天堂| 国产精品嫩草影院一区二区| 国产亚洲精品久久久久久777| 热久久这里只有精品| 国产精品入口尤物| 国产精品偷伦一区二区| 亚洲欧美中文日韩在线v日本| 97香蕉久久夜色精品国产| 91日本在线观看| 亚洲精品久久久久久久久久久久| 日韩电影视频免费| 国产精品中文久久久久久久| 美女精品视频一区| 久久久久久尹人网香蕉| 欧美在线视频一二三| 91嫩草在线视频| www.亚洲天堂| 欧美大尺度激情区在线播放| 久久久久女教师免费一区| 欧美激情女人20p| 国产精品久久久久久久7电影| 亚洲视频免费一区| 欧美激情在线观看视频| 欧美激情精品久久久久久黑人| 成人激情春色网| 97成人在线视频| 亚洲加勒比久久88色综合| 97在线精品国自产拍中文| 国产成人精品av在线| 亚洲国产精品免费| 欧美性猛交xxxx| 另类少妇人与禽zozz0性伦| www.色综合| 亚洲成人久久电影| 国产大片精品免费永久看nba| 国产免费一区视频观看免费| 亚洲成色777777女色窝| 夜夜狂射影院欧美极品| 日韩在线观看免费av| 免费不卡在线观看av| 538国产精品一区二区免费视频| 亚洲一区二区黄| 久久成人一区二区| 中日韩美女免费视频网址在线观看| 91av国产在线| 午夜精品一区二区三区在线| 国模精品视频一区二区| 久久国产精品影视| 欧美激情按摩在线| 亚洲一级黄色av| 成人午夜在线观看| 亚洲区在线播放| 欧美电影在线观看网站| 91精品国产91久久久久久吃药| 国产精品男人爽免费视频1| 日韩高清不卡av| 欧美亚洲日本网站| 91成品人片a无限观看| 第一福利永久视频精品| 久久久久久成人| 亚洲奶大毛多的老太婆| 国产精品久久久久久久美男| 91最新在线免费观看| 日韩欧美第一页| 奇门遁甲1982国语版免费观看高清| 奇米四色中文综合久久| 精品久久香蕉国产线看观看亚洲| 欧美国产日韩xxxxx| 欧美天天综合色影久久精品| 欧美一区二区.| 国产亚洲欧洲高清| 欧美大片免费观看在线观看网站推荐| 欧美成人午夜激情视频| 91九色国产社区在线观看| 欧美大全免费观看电视剧大泉洋| 91免费精品视频| 国产精品爽爽爽爽爽爽在线观看| 国产一区二区欧美日韩| 成人免费网站在线观看| 国产综合久久久久| 久久理论片午夜琪琪电影网| 国产精品亚洲аv天堂网| 亚洲日本成人女熟在线观看| 国模吧一区二区| 成人有码在线视频| 91精品国产自产在线老师啪| 日韩免费视频在线观看| 欧美丰满片xxx777| 成年无码av片在线| 国产精品678| 色综合久久天天综线观看| 高清一区二区三区日本久| 亚洲精品永久免费精品| 国产精品成熟老女人| 日韩av手机在线观看| 国产精品视频免费观看www| 国产在线视频91| 97在线视频精品| 国产精品亚洲欧美导航| 亚洲电影在线观看| 欧美精品久久久久久久久| 岛国av一区二区在线在线观看| 中文字幕亚洲情99在线| 97精品伊人久久久大香线蕉| 岛国视频午夜一区免费在线观看| 91精品国产高清久久久久久| 国产亚洲美女久久| 欧美wwwxxxx| 欧美日韩裸体免费视频| 亚洲欧美日韩精品久久| 中文字幕日韩av| 日韩亚洲第一页| 91色视频在线导航| 国产精品网站入口| 欧美激情一区二区三级高清视频| 亚洲自拍偷拍色图| 成人在线视频网站| 中文字幕日韩av电影| 欧美激情性做爰免费视频| 2020国产精品视频| 欧美黄色成人网| 久久国产精品首页| 欧美人成在线视频| 欧美国产亚洲视频| 欧美激情一区二区三区高清视频| 丁香五六月婷婷久久激情| 欧美精品国产精品日韩精品| 在线视频亚洲欧美| 在线精品91av| 欧美日韩第一页| 亚洲精品国产精品久久清纯直播| 欧美精品国产精品日韩精品| 亚洲黄在线观看| 红桃视频成人在线观看| 亚洲欧美三级伦理| 国产美女91呻吟求| 久久亚洲国产精品| 欧美富婆性猛交| 亚洲九九九在线观看| 亚洲美女精品成人在线视频| 亚洲综合一区二区不卡| 最近2019中文免费高清视频观看www99| 日韩av男人的天堂| 97在线观看免费高清| 高清日韩电视剧大全免费播放在线观看| 成人在线免费观看视视频| 国产精品女视频| 国产精品自拍小视频| 欧美日韩人人澡狠狠躁视频| 国产精品96久久久久久又黄又硬| 中文精品99久久国产香蕉| 黄色精品一区二区|