亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

基于JavaScript實現繼承機制之原型鏈(prototype chaining)的詳解

2019-11-20 22:44:29
字體:
來源:轉載
供稿:網友

如果用原型方式重定義前面例子中的類,它們將變為下列形式:

復制代碼 代碼如下:

function ClassA() {
}

ClassA.prototype.color = "blue";
ClassA.prototype.sayColor = function () {
    alert(this.color);
};

function ClassB() {
}

ClassB.prototype = new ClassA();


原型方式的神奇之處在于最后一行代碼。這里,把 ClassB 的 prototype 屬性設置成 ClassA 的實例。這很有意思,因為想要 ClassA 的所有屬性和方法,但又不想逐個將它們 添加到ClassB 的 prototype 屬性。還有比把 ClassA 的實例賦予 prototype 屬性更好的方法嗎?

注意:調用 ClassA 的構造函數,沒有給它傳遞參數。這在原型鏈中是標準做法。要確保構造函數沒有任何參數。

與對象冒充相似,子類的所有屬性和方法都必須出現在 prototype 屬性被賦值后,因為在它之前賦值的所有方法都會被刪除。為什么?因為 prototype 屬性被替換成了新對象,添加了新方法的原始對象將被銷毀。所以,為 ClassB 類添加 name 屬性和 sayName() 方法的代碼如下:

復制代碼 代碼如下:

function ClassB() {
}

ClassB.prototype = new ClassA();

ClassB.prototype.name = "";
ClassB.prototype.sayName = function () {
    alert(this.name);
};


可通過運行下面的例子測試這段代碼:
復制代碼 代碼如下:

var objA = new ClassA();
var objB = new ClassB();
objA.color = "blue";
objB.color = "red";
objB.name = "John";
objA.sayColor();
objB.sayColor();
objB.sayName();

此外,在原型鏈中,instanceof 運算符的運行方式也很獨特。對 ClassB 的所有實例,instanceof 為 ClassA 和 ClassB 都返回 true。例如:
復制代碼 代碼如下:

var objB = new ClassB();
alert(objB instanceof ClassA);    //輸出 "true"
alert(objB instanceof ClassB);    //輸出 "true"

在 ECMAScript 的弱類型世界中,這是極其有用的工具,不過使用對象冒充時不能使用該方法判斷。但是由于子類的原型被直接重新賦值,所以出現以下這種情況:
復制代碼 代碼如下:

console.log(objB.__proto__===objB.constructor.prototype)   //false

因為ClassB的原型鏈 prototype 屬性被另一個類的對象重寫了。輸出結果可以看出objB.__proto__仍然指向的是ClassB.prototype,而不是objB.constructor.prototype。這也很好理解,給Person.prototype賦值的是一個對象直接量new ClassA()實例,使用對象直接量方式定義的對象其構造器(constructor)指向的是根構造器Object,Object.prototype是一個空對象{},{}自然與ClassB.prototype不等。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲精品一区二区| 欧美夫妻性生活xx| 中文精品99久久国产香蕉| 日韩一级裸体免费视频| 91亚洲国产成人久久精品网站| 亚洲free性xxxx护士hd| 日本精品视频在线| 欧美成人免费在线观看| 国产精品吊钟奶在线| 亚洲毛茸茸少妇高潮呻吟| 久久精品久久精品亚洲人| 久久久久久com| 欧美精品999| 中文字幕日韩av电影| 91国产中文字幕| 在线看国产精品| 久久久久久噜噜噜久久久精品| 日韩美女在线看| 一区二区亚洲欧洲国产日韩| 久久精品视频免费播放| 久久99热这里只有精品国产| 欧美性少妇18aaaa视频| 夜夜狂射影院欧美极品| 欧美另类暴力丝袜| 欧洲s码亚洲m码精品一区| 国产一区二区视频在线观看| 国产成人久久久| 亚洲影院高清在线| 美日韩在线视频| 亚洲欧洲中文天堂| 亚洲国产精品资源| 精品视频9999| 国产经典一区二区| 午夜剧场成人观在线视频免费观看| 国产精品久久久精品| 色综合五月天导航| 美日韩在线视频| 亚洲欧美国产精品久久久久久久| 久久久久久97| 日韩精品视频三区| 91色视频在线观看| 日韩中文字幕不卡视频| 亚洲欧美在线磁力| 久久精品国产免费观看| 97视频免费观看| 欧美老女人在线视频| 久久精彩免费视频| 欧美电影免费观看| 91成品人片a无限观看| 欧美一区二区三区艳史| 欧美专区第一页| 亚洲福利精品在线| 亚洲女性裸体视频| 亚洲精品久久久久久久久久久久| 亚洲人成网站999久久久综合| 亚洲激情免费观看| 欧美日韩亚洲一区二区| 日韩美女av在线免费观看| 日韩亚洲欧美成人| 在线播放日韩欧美| 久久免费精品日本久久中文字幕| 久久久久久久av| 国产精品美女免费| 国产欧美日韩中文字幕| 97国产精品视频| 日韩电影免费观看在线| 国产成人精品久久亚洲高清不卡| 亚洲精品久久久久中文字幕欢迎你| 久久久视频在线| 国产成人精品a视频一区www| 亚洲午夜av电影| 亚洲精品美女在线观看播放| 热门国产精品亚洲第一区在线| 国产亚洲精品综合一区91| 亚洲精品视频二区| 色樱桃影院亚洲精品影院| 视频在线观看一区二区| 国产精品嫩草影院久久久| 青青青国产精品一区二区| 欧美精品videossex88| 日韩欧美亚洲一二三区| 成人在线激情视频| 一区二区成人av| 中文欧美在线视频| 欧美国产日韩一区二区三区| 国产精品xxx视频| 久久久国产一区二区| 91精品啪在线观看麻豆免费| 国产精品视频白浆免费视频| 亚洲精品电影在线| 国产精品久久久久9999| 欧美中文字幕在线| 97福利一区二区| 国产在线精品自拍| 国产国语videosex另类| 亚洲第一偷拍网| 久久久av网站| 亚洲国内精品在线| 欧美视频免费在线观看| 国产日韩精品综合网站| 91久久久久久久久久| 亚洲综合自拍一区| 97久久精品人搡人人玩| 久久成人av网站| 日韩av大片在线| 亚洲精品久久久久中文字幕二区| 亚洲娇小xxxx欧美娇小| 亚洲丁香久久久| 91精品视频观看| 亚洲精品国产成人| 国产福利视频一区二区| 久久精品国产久精国产一老狼| 91免费国产视频| 国产精品亚洲美女av网站| 亚洲免费视频一区二区| 久久躁日日躁aaaaxxxx| 成人444kkkk在线观看| 亚洲一区二区三区xxx视频| 国产精品夫妻激情| 91国产中文字幕| 国产精品视频久久久久| 日韩在线小视频| 国产精品高清网站| 国产精品久久久久久久久久| 91精品在线一区| 欧美精品免费看| 最近的2019中文字幕免费一页| 欧美激情免费观看| 亚洲日本欧美中文幕| 欧美精品国产精品日韩精品| 亚洲丁香婷深爱综合| 国产精品欧美日韩| 欧美日韩在线观看视频小说| 成人福利在线视频| 性欧美长视频免费观看不卡| 国产精品69久久| 久久精品一本久久99精品| 91精品国产自产91精品| 超碰97人人做人人爱少妇| 欧美一级大片在线免费观看| 国产69久久精品成人看| 国语自产偷拍精品视频偷| 亚洲变态欧美另类捆绑| 欧美黑人巨大xxx极品| 欧美性猛交xxxx富婆| 欧美大片免费观看在线观看网站推荐| 亚洲伊人久久综合| 黑人精品xxx一区一二区| 亚洲人a成www在线影院| 亚洲aⅴ日韩av电影在线观看| 日韩美女免费线视频| 精品欧美一区二区三区| 欧美性极品xxxx做受| 欧美日韩国产一区二区| 日韩av在线网址| 91九色综合久久| 亚洲人成网站在线播| 91天堂在线视频| 国产一区二区黑人欧美xxxx| 国产这里只有精品| 亚洲精品中文字| 欧美黄色三级网站| 亚洲欧美在线一区| 久久久久北条麻妃免费看|