//person類
var Person = {
name : '名稱', //名稱
getName : function(){
return this.name;
}
}
//實現原型式繼承
function Clone( superClass ){
function F(){} //如果不建立物件就無法實現原型鏈
F.prototype = superClass; //引用
return new F;
}
//Author類
var Author = Clone( Person );
Author.books = '書名';
Author.getBooks = function(){
return this.books;
}
//建立author物件
var wuChengEn = Clone( Author );
wuChengEn.name = '吳承恩';
wuChengEn.books = '西遊記';
var caoXueQin = Clone( Author );
caoXueQin.name = '曹雪芹';
caoXueQin.books = '紅樓夢';
var luoGuanZhong = Clone( Author )
luoGuanZhong.name = '羅貫中';
luoGuanZhong.books = '三國演義';
var shiNaiAn = Clone( Author );
shiNaiAn.name = '施耐庵';
shiNaiAn.books = '水滸傳';
document.write('中國四大名著有哪些:'
+ wuChengEn.getBooks() + ', '
+ caoXueQin.getBooks() + ', '
+ luoGuanZhong.getBooks() + ', '
+ shiNaiAn.getBooks() + '
'
)
友情連結:
http://www.scwqt.com 99彩平臺
http://99caicn.com 99彩
http://99caipiaoo.com 99彩票
http://99caizhuce.com 99彩註冊
http://dayuyingying.com 大魚平臺
http://dayuzhuce.com 大魚平臺註冊
http://www.101zhuce.com 101線上
http://101pingtai.com 101娛樂
恆彩88平臺
document.write('作者分別為:'
+ wuChengEn.getName() + ', '
+ caoXueQin.getName() + ', '
+ luoGuanZhong.getName() + ', '
+ shiNaiAn.getName()
)
js原型式繼承中讀寫的不對等性
下面將說明什麼是讀寫的不對等性:
var test = Clone( Author );
test.getName(); // 名稱
test.name = '新名稱'; //修改屬性值.
//在建立物件原型時是對person物件的引用(F.prototype = superClass),那些我們在建立物件後呼叫原型中的屬性然後修改其值那麼原型中的值也應該被修改掉.
//呼叫基類name屬性看其值是否有改變
Person.name; //輸出之後 發現關沒有改變這是為什麼呢?
/*
在使用字面量來建立物件時對於從原型物件繼承而來的成員,其讀和寫具有內在的不對等性.在讀取name值時,如果我們還沒有直接為例項定義name屬性的話,那麼所得到的是其原型物件的同名屬性值.而在寫入name的值時,是在為物件定義一個新屬性.
*/