Javascript之面向?qū)ο?-封裝
第一步:做一個“手機的類"
var MobilePhone = (function(){
…………
})()
第二步:考慮這個類,里需要那些類的私有屬性,這里我想定義的是實例出來手機的數(shù)量
var MobilePhone = (function(){
//私有屬性
var count = 0; //代表手機的數(shù)量
})()
第三步:創(chuàng)建一個構(gòu)造函數(shù),即實例時候,對產(chǎn)生的新象的一個初始化,例如屬性,方法的初始化;在這個例子中,每一個手機都會有顏色,大小,價格屬性.這里的構(gòu)造函數(shù)也是一個閉包,所以可以訪問count,并且count的值會長期保存在內(nèi)存中(只要有引用存在)
var MobilePhone = (function(){
//私有屬性
var count = 0; //代表手機的數(shù)量
//構(gòu)造函數(shù)
var creatphone = function(color,size,price){
count++;
this._color = color; //手機的顏色
this._size = size; //手機的大小
this._price = price; //手機的價格
this.index = count; //手機索引,是第幾臺創(chuàng)建的手機手象
}
})()
第四步:共有方法:
即所有實例出來的手機對象,都能使用的方法,這里手機應該可以改變價格,顏色,大小,也可以顯示大小,顏色,價格。
這里的共有方法應該放在“原型對象”中:
1.所有通過該構(gòu)造函數(shù)實例的對象,也就是造出的手機,都能使用“原型對象”中的方法。
2.如果放在構(gòu)造函數(shù)中,那么每一次實例一個手機對象出來,都會產(chǎn)生一堆重復的方法,占用內(nèi)存。
3."constructor":creatphone解釋:
因為creatphone.prototype ={……}相當對把之前的原型對象的引用,給復蓋掉了。而為了讓原型對象和該構(gòu)造函數(shù)關(guān)聯(lián)起來 設置了"constructor":creatphone,這個屬性.
var MobilePhone = (function(){
//私有屬性
var count = 0;//代表手機的數(shù)量
//構(gòu)造函數(shù)
var creatphone = function(color,size,price){
count++;
this._color = color; //手機的顏色
this._size = size; //手機的大小
this._price = price; //手機的價格
this.index = count; //手機索引,是第幾臺創(chuàng)建的手機手象
}
//公有方法,存放在原型對象中
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)方法,即需要有一個方法,能夠去訪問類的私有變量。就是實例出來多少臺手機對象
var MobilePhone = (function(){
//私有屬性
var count = 0;//代表手機的數(shù)量
var index = 0;//代表手機的索引
//構(gòu)造函數(shù)
var creatphone = function(color,size,price){
count++;
this._color = color; //手機的顏色
this._size = size; //手機的大小
this._price = price; //手機的價格
this.index = count; //手機索引,是第幾臺創(chuàng)建的手機手象
}
//公有方法,存放在原型對象中
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;
})()
用上面封裝的一個手機類 測試
var anycall = new MobilePhone(); //實例一個三星手機對象
var HTC = new MobilePhone(); //實例一個HTC手機對象
var Iphone4s = new MobilePhone(); //實例一個蘋果4S手機對象
console.log("三星是第:"+anycall.index+"臺"); //FF的控制臺輸出三星手機對象是第幾臺創(chuàng)建的,即索引;
console.log("HTC是第:"+HTC.index+"臺"); //FF的控制臺輸出HTC手機對象是第幾臺創(chuàng)建的,即索引;
console.log("Iphone4s是第:"+Iphone4s.index+"臺"); //FF的控制臺輸出個蘋果4S手機對象是第幾臺創(chuàng)建的,即索引;
console.log("總共造出了"+MobilePhone.get_count_index()+"手機"); //FF的控制臺輸出總共創(chuàng)建了幾臺手機;
console.log(anycall.constructor === MobilePhone); //實例出來的對象,的原形象中的constructor,是否還指向MobilePhone
結(jié)果如下,全完正確:

以上就是本文的全部內(nèi)容,希望對大家有所幫助,感興趣的朋友可以看下《Javascript之面向?qū)ο?-方法》謝謝對腳本之家的支持!
- 學習Javascript面向?qū)ο缶幊讨庋b
- Javascript 面向?qū)ο缶幊蹋ㄒ唬?封裝
- javascript 面向?qū)ο缶幊袒A:封裝
- javascript面向?qū)ο笕筇卣髦庋b實例詳解
- js實現(xiàn)對ajax請求面向?qū)ο蟮姆庋b
- javascript 面向?qū)ο蠓庋b與繼承
- javascript面向?qū)ο蟀b類Class封裝類庫剖析
- Javascript 面向?qū)ο螅ǘ┓庋b代碼
- 面向?qū)ο蟮腏avascript之三(封裝和信息隱藏)
- javascript對XMLHttpRequest異步請求的面向?qū)ο蠓庋b
- javascript 面向?qū)ο笕吕砭氈當?shù)據(jù)的封裝
- JS面向?qū)ο缶幊袒A篇(二) 封裝操作實例詳解
相關(guān)文章
TypeScript 獲取函數(shù)的參數(shù)類型、返回值類型及定義返回函數(shù)類型
這篇文章主要介紹了TypeScript 獲取函數(shù)的參數(shù)類型、返回值類型及定義返回函數(shù)類型,需要的朋友可以參考下2024-02-02
bootstrap表格內(nèi)容過長時用省略號表示的解決方法
這篇文章主要介紹了bootstrap表格內(nèi)容過長時用省略號表示的解決方法,需要的朋友可以參考下2017-11-11
微信小程序中的數(shù)據(jù)存儲實現(xiàn)方式
這篇文章主要介紹了微信小程序中的數(shù)據(jù)存儲實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-08-08
一種Javascript解釋ajax返回的json的好方法(推薦)
下面小編就為大家?guī)硪黄环NJavascript解釋ajax返回的json的好方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
js如何監(jiān)聽input輸入事件及使用防抖封裝函數(shù)處理方法
這篇文章主要給大家介紹了關(guān)于js如何監(jiān)聽input輸入事件及使用防抖封裝函數(shù)處理方法的相關(guān)資料,最近有一個需求,需要我們實時監(jiān)聽input輸入框中的內(nèi)容,從而帶來更好的用戶體驗,需要的朋友可以參考下2023-07-07
javascript實現(xiàn)貪吃蛇經(jīng)典游戲
這篇文章主要為大家詳細介紹了javascript實現(xiàn)貪吃蛇經(jīng)典游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04

