Javascript之面向?qū)ο?-封裝
第一步:做一個(gè)“手機(jī)的類"
var MobilePhone = (function(){ ………… })()
第二步:考慮這個(gè)類,里需要那些類的私有屬性,這里我想定義的是實(shí)例出來手機(jī)的數(shù)量
var MobilePhone = (function(){ //私有屬性 var count = 0; //代表手機(jī)的數(shù)量 })()
第三步:創(chuàng)建一個(gè)構(gòu)造函數(shù),即實(shí)例時(shí)候,對(duì)產(chǎn)生的新象的一個(gè)初始化,例如屬性,方法的初始化;在這個(gè)例子中,每一個(gè)手機(jī)都會(huì)有顏色,大小,價(jià)格屬性.這里的構(gòu)造函數(shù)也是一個(gè)閉包,所以可以訪問count,并且count的值會(huì)長(zhǎng)期保存在內(nèi)存中(只要有引用存在)
var MobilePhone = (function(){ //私有屬性 var count = 0; //代表手機(jī)的數(shù)量 //構(gòu)造函數(shù) var creatphone = function(color,size,price){ count++; this._color = color; //手機(jī)的顏色 this._size = size; //手機(jī)的大小 this._price = price; //手機(jī)的價(jià)格 this.index = count; //手機(jī)索引,是第幾臺(tái)創(chuàng)建的手機(jī)手象 } })()
第四步:共有方法:
即所有實(shí)例出來的手機(jī)對(duì)象,都能使用的方法,這里手機(jī)應(yīng)該可以改變價(jià)格,顏色,大小,也可以顯示大小,顏色,價(jià)格。
這里的共有方法應(yīng)該放在“原型對(duì)象”中:
1.所有通過該構(gòu)造函數(shù)實(shí)例的對(duì)象,也就是造出的手機(jī),都能使用“原型對(duì)象”中的方法。
2.如果放在構(gòu)造函數(shù)中,那么每一次實(shí)例一個(gè)手機(jī)對(duì)象出來,都會(huì)產(chǎn)生一堆重復(fù)的方法,占用內(nèi)存。
3."constructor":creatphone解釋:
因?yàn)閏reatphone.prototype ={……}相當(dāng)對(duì)把之前的原型對(duì)象的引用,給復(fù)蓋掉了。而為了讓原型對(duì)象和該構(gòu)造函數(shù)關(guān)聯(lián)起來 設(shè)置了"constructor":creatphone,這個(gè)屬性.
var MobilePhone = (function(){ //私有屬性 var count = 0;//代表手機(jī)的數(shù)量 //構(gòu)造函數(shù) var creatphone = function(color,size,price){ count++; this._color = color; //手機(jī)的顏色 this._size = size; //手機(jī)的大小 this._price = price; //手機(jī)的價(jià)格 this.index = count; //手機(jī)索引,是第幾臺(tái)創(chuàng)建的手機(jī)手象 } //公有方法,存放在原型對(duì)象中 creatphone.prototype = { "constructor":creatphone, //獲取手機(jī)顏色 "getColor" : function(){ return this._color; }, //設(shè)置手機(jī)顏色 "setColor" : function(color){ this._color = color; }, //獲取手機(jī)大小 "getSize" : function(){ return "width:"+this._size.width + " height:" + this._size.height; }, //設(shè)置手機(jī)大小 "setSize" : function(size){ this._size.width = size.width; this._size.height = size.height; }, //獲取手機(jī)價(jià)格 "getPrice" : function(){ return this._price; }, //設(shè)置手機(jī)價(jià)格 "setPrice" : function(price){ this._price = price } } })()
第五步:特權(quán)方法,即需要有一個(gè)方法,能夠去訪問類的私有變量。就是實(shí)例出來多少臺(tái)手機(jī)對(duì)象
var MobilePhone = (function(){ //私有屬性 var count = 0;//代表手機(jī)的數(shù)量 var index = 0;//代表手機(jī)的索引 //構(gòu)造函數(shù) var creatphone = function(color,size,price){ count++; this._color = color; //手機(jī)的顏色 this._size = size; //手機(jī)的大小 this._price = price; //手機(jī)的價(jià)格 this.index = count; //手機(jī)索引,是第幾臺(tái)創(chuàng)建的手機(jī)手象 } //公有方法,存放在原型對(duì)象中 creatphone.prototype = { "constructor":creatphone, "getColor" : function(){ return this._color; }, "setColor" : function(color){ this._color = color; }, "getSize" : function(){ return "width:"+this._size.width + " height:" + this._size.height; }, "setSize" : function(size){ this._size.width = size.width; this._size.height = size.height; }, "getPrice" : function(){ return this._price; }, "setPrice" : function(price){ this._price = price } } //特權(quán)方法 creatphone.get_count_index = function(){ return count } return creatphone; })()
用上面封裝的一個(gè)手機(jī)類 測(cè)試
var anycall = new MobilePhone(); //實(shí)例一個(gè)三星手機(jī)對(duì)象 var HTC = new MobilePhone(); //實(shí)例一個(gè)HTC手機(jī)對(duì)象 var Iphone4s = new MobilePhone(); //實(shí)例一個(gè)蘋果4S手機(jī)對(duì)象 console.log("三星是第:"+anycall.index+"臺(tái)"); //FF的控制臺(tái)輸出三星手機(jī)對(duì)象是第幾臺(tái)創(chuàng)建的,即索引; console.log("HTC是第:"+HTC.index+"臺(tái)"); //FF的控制臺(tái)輸出HTC手機(jī)對(duì)象是第幾臺(tái)創(chuàng)建的,即索引; console.log("Iphone4s是第:"+Iphone4s.index+"臺(tái)"); //FF的控制臺(tái)輸出個(gè)蘋果4S手機(jī)對(duì)象是第幾臺(tái)創(chuàng)建的,即索引; console.log("總共造出了"+MobilePhone.get_count_index()+"手機(jī)"); //FF的控制臺(tái)輸出總共創(chuàng)建了幾臺(tái)手機(jī); console.log(anycall.constructor === MobilePhone); //實(shí)例出來的對(duì)象,的原形象中的constructor,是否還指向MobilePhone
結(jié)果如下,全完正確:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家有所幫助,感興趣的朋友可以看下《Javascript之面向?qū)ο?-方法》謝謝對(duì)腳本之家的支持!
- 學(xué)習(xí)Javascript面向?qū)ο缶幊讨庋b
- Javascript 面向?qū)ο缶幊蹋ㄒ唬?封裝
- javascript 面向?qū)ο缶幊袒A(chǔ):封裝
- javascript面向?qū)ο笕筇卣髦庋b實(shí)例詳解
- js實(shí)現(xiàn)對(duì)ajax請(qǐng)求面向?qū)ο蟮姆庋b
- javascript 面向?qū)ο蠓庋b與繼承
- javascript面向?qū)ο蟀b類Class封裝類庫(kù)剖析
- Javascript 面向?qū)ο螅ǘ┓庋b代碼
- 面向?qū)ο蟮腏avascript之三(封裝和信息隱藏)
- javascript對(duì)XMLHttpRequest異步請(qǐng)求的面向?qū)ο蠓庋b
- javascript 面向?qū)ο笕吕砭氈當(dāng)?shù)據(jù)的封裝
- JS面向?qū)ο缶幊袒A(chǔ)篇(二) 封裝操作實(shí)例詳解
相關(guān)文章
bootstrap 模態(tài)框(modal)實(shí)現(xiàn)水平垂直居中顯示
這篇文章主要為大家詳細(xì)介紹了bootstrap 模態(tài)框modal實(shí)現(xiàn)水平垂直居中顯示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加,刪除行的方法實(shí)例詳解
這篇文章主要介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加,刪除行的方法,較為詳細(xì)的分析了javascript操作table表格實(shí)現(xiàn)針對(duì)表格元素動(dòng)態(tài)操作的相關(guān)技巧,需要的朋友可以參考下2015-07-07微信小程序基于picker實(shí)現(xiàn)級(jí)聯(lián)菜單
這篇文章主要為大家詳細(xì)介紹了微信小程序基于picker實(shí)現(xiàn)級(jí)聯(lián)菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02JavaScript實(shí)現(xiàn)簡(jiǎn)潔的俄羅斯方塊完整實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)潔的俄羅斯方塊,以完整實(shí)例形式分析了JavaScript實(shí)現(xiàn)俄羅斯方塊游戲的具體技巧,代碼備有詳盡的注釋便于理解,需要的朋友可以參考下2016-03-03js實(shí)現(xiàn)精美的圖片跟隨鼠標(biāo)效果實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)精美的圖片跟隨鼠標(biāo)效果,實(shí)例分析了javascript鼠標(biāo)事件及頁(yè)面樣式的操作技巧,需要的朋友可以參考下2015-05-05