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