JavaScript 應(yīng)用原型
■知識(shí)點(diǎn)
原型屬性可以被所有實(shí)例訪問(wèn),而私有屬性只能被當(dāng)前實(shí)例訪問(wèn)。
下面通過(guò)幾個(gè)實(shí)例介紹原型在代碼中的應(yīng)用技巧。
■實(shí)例設(shè)計(jì)
【示例1】利用原型為對(duì)象設(shè)置默認(rèn)值。當(dāng)原型屬性與私有屬性同名時(shí),刪除私有屬性之后,可以訪問(wèn)原型屬性,即可以把原型屬性值作為初始化默認(rèn)值。
function p(x){ //構(gòu)造函數(shù)
if (x) //如果參數(shù)存在,則設(shè)置屬性,該條件是關(guān)鍵
this.x = x; //使用參數(shù)初始化私有屬性x的值
}
p.prototype.x = 0; //利用原型屬性,設(shè)置私有屬性x的默認(rèn)值
var p1 = new p(); //實(shí)例化一個(gè)沒(méi)有帶參數(shù)的對(duì)象
console.log(p1.x); //返回0,即顯示私有屬性的默認(rèn)值
var p2 = new p(1); //再次實(shí)例化,傳遞一個(gè)新的參數(shù)
console.log(p2.x); //返回1,即顯示私有屬性的初始化值
【示例2】利用原型間接實(shí)現(xiàn)本地?cái)?shù)據(jù)備份。把本地對(duì)象的數(shù)據(jù)完全賦值給原型對(duì)象,相當(dāng)于為該對(duì)象定義一個(gè)副本,通俗地說(shuō)就是備份對(duì)象。這樣當(dāng)對(duì)象屬性被修改時(shí),可以通過(guò)原型對(duì)象來(lái)恢復(fù)本地對(duì)象的初始值。
function p (x){ //構(gòu)造函數(shù)
this.x = x;
}
p.prototype.backup = function (){ //原型方法,備份本地對(duì)象的數(shù)據(jù)到原型對(duì)象中
for(var i in this){
p.prototype[i] = this[i];
}
}
var pi = new p(1); //實(shí)例化對(duì)象
p1.backup(); //備份實(shí)例對(duì)象中的數(shù)據(jù)
p1.x =10; //改寫本地對(duì)象的屬性值
console.log(p1.x) //返回10,說(shuō)明屬性值己經(jīng)被改寫
p1 = p.prototype; //恢復(fù)備份
console.log(p1.x) //返回1,說(shuō)明對(duì)象的屬性值己經(jīng)被恢復(fù)
點(diǎn)擊加載更多評(píng)論>>