国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript繼承與聚合實(shí)例詳解

2024-05-06 15:42:57
字體:
供稿:網(wǎng)友

本文實(shí)例講述了JavaScript繼承與聚合。分享給大家供大家參考,具體如下:

一、繼承

第一種方式:類與被繼承類直接耦合度高

1. 首先,準(zhǔn)備一個(gè)可以被繼承的類(父類),例如

//創(chuàng)建一個(gè)人員類function Person(name) {//現(xiàn)在Person里面的域是由Person里面的來this來控制的  this.name=name;}

2. 然后,有個(gè)需要繼承父類的子類

function Teacher(name,books) {  Person.call(this,name);//相當(dāng)于java中的super函數(shù) 在new Teacher時(shí)將Person的name初始化  this.books=books;}

說明一下:

(1)call方法可以將一個(gè)函數(shù)的對(duì)象上下文從初始化變成由this來決定一個(gè)類去控制另一個(gè)類

(2)Teacher類去控制 Person類 用Teacher域里面的 this來控制Person域里面的 this

(3)調(diào)用 Perosn的構(gòu)造函數(shù),因?yàn)镻erosn沒有用 new 所以是個(gè)空對(duì)象(模板)     顯示調(diào)用call方法,可以初始化 Person

3. 最后,實(shí)現(xiàn)繼承

(步驟1)先繼承

Teacher.prototype=new Person();Teacher.prototype.constructor=Teacher;//確保繼承后任然是Teacher自己的構(gòu)造函數(shù)

(步驟2)為子類擴(kuò)展一些方法,用于訪問從父類繼承的內(nèi)容

Teacher.prototype.getBook=function () {  return this.name+" "+this.books;}

(步驟3)使用已經(jīng)繼承好的類

var jim=new Teacher("Jim","Javascript");alert(jim.getBook())

總結(jié):此種方法是直接在子類中顯示調(diào)用父類,耦合度高,復(fù)用性差。

第二種方式,使用封裝,完成程序中所用繼承操作

1. 首先,準(zhǔn)備一個(gè)可以被繼承的類(父類),例如

//創(chuàng)建一個(gè)人員類function Person(name) {//現(xiàn)在Person里面的域由Person里面的來this來控制的  this.name=name;}

2. 創(chuàng)建extend函數(shù)為了程序中所有的繼承操作(最重要的地方)

/*創(chuàng)建extend函數(shù)為了程序中所有的繼承操作*///subClass:子類 superClass:超類(2)function extend(subClass,superClass) {    //1,使子類原型屬性等于父類的原型屬性    //初始化一個(gè)中間空對(duì)象,目的是為了轉(zhuǎn)換主父關(guān)系    var F = function () {};    F.prototype = superClass.prototype;    //2, 讓子類繼承F    subClass.prototype = new F();    subClass.prototype.constructor = subClass;    //3,為子類增加屬性 superClass ==》原型鏈的引用    subClass.superClass = superClass.prototype;    //4,增加一個(gè)保險(xiǎn),就算你的原型類是超類(Object)那么也要把你的構(gòu)造函數(shù)級(jí)別降下來  【說明一些:這里只是其中一個(gè)簡(jiǎn)單的保險(xiǎn),其余情況后續(xù)增加。。。】    if (superClass.prototype.constructor == Object.prototype.constructor) {      superClass.prototype.constructor = superClass;    }}            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 班玛县| 黄陵县| 泗阳县| 深圳市| 莲花县| 芷江| 乌拉特中旗| 化州市| 从江县| 洛阳市| 浮梁县| 土默特右旗| 平乡县| 平果县| 濮阳市| 蒙城县| 和硕县| 吉水县| 富锦市| 白玉县| 土默特右旗| 东至县| 兰西县| 巴彦淖尔市| 嘉祥县| 赣榆县| 黄山市| 清涧县| 吴川市| 新沂市| 阜康市| 枣阳市| 庆元县| 怀安县| 万州区| SHOW| 大庆市| 通化市| 泰州市| 鞍山市| 内丘县|