第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

原型模式

原型模式

当直接创建对象的代价比较大时,可以通过复制一个现有的对象生成新的对象,就叫做原型模式。
当然,JavaScript 本身就是基于原型实现继承的(1),因此在 JavaScript 中使用原型模式非常简单。
值得注意的是,JavaScript 原型上的成员(属性和方法)是所有实例共享的,并非定义中的复制。

*(1)有关于原型继承的内容,此前已经说过很多了,可以参考最新的一篇手记:面向对象之继承性

例子:

/* 基类 */
function F_class(name, age) {
    this.name = name;
    this.age = age;
};
//基类原型
F_class.prototype = {
    getName: function () {
        return this.name;
    },
    getAge: function () {
        return this.age;
    }
}

/* 子类 */
function C_class() {
    F_class.apply(this, arguments);
}
//子类原型(通过继承基类原型)
C_class.prototype = new F_class();

/* 创建子类实例 */
var p = new C_class("Tom", 20);

console.log(p.getName());
//输出 Tom

将那些可复用的、可共享的、耗时大的放到基类的原型中,然后子类通过组合式继承或者其他继承方式,将基类原型中的成员继承下来,这样由子类创建的对象也就共享了基类中的属性和方法。

重写原型成员

对于子类差异化的需求,子类可以通过重写基类的成员来解决。

例子:

/* 基类 */
function F_class(name, age) {
    this.name = name;
    this.age = age;
};
//基类原型
F_class.prototype = {
    getName: function () {
        return this.name;
    },
    getAge: function () {
        return this.age;
    }
}

/* 子类 */
function C_class() {
    F_class.apply(this, arguments);
}
//子类原型(通过继承基类原型)
C_class.prototype = new F_class();

//重写基类方法
C_class.prototype.getName = function () {
    var name_list = this.name.split(" ");
    return "firstName:" + name_list[0] + "/" + "lastName:" + name_list[1];
}

/* 创建子类实例 */
var p = new C_class("Brown Tom", 20);

console.log(p.getName());
//输出 firstName:Brown/lastName:Tom

拓展原型成员

基类原型是一个共享的对象,因此对基类原型的拓展,无论是基类的实例,还是子类的实例,都可以继承下来。

例子:

/* 基类 */
function F_class(name, age) {
    this.name = name;
    this.age = age;
};
//基类原型
F_class.prototype = {
    getName: function () {
        return this.name;
    },
    getAge: function () {
        return this.age;
    }
}

/* 子类 */
function C_class() {
    F_class.apply(this, arguments);
}
//子类原型(通过继承基类原型)
C_class.prototype = new F_class();


//基类拓展一个 getJob 方法
F_class.prototype.getJob = function () {
    return "Web Worker";
}

/* 创建子类实例 */
var p = new C_class("Tom", 20);

console.log(p.getJob());
//输出 Web Worker

原型共享给予我们拓展的自由性,但也有可能会影响到他人,因此要谨慎使用。


如有错误,欢迎指正,本人不胜感激。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消