成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于JS的面向?qū)ο蟮乃伎己涂偨Y(jié)

paulli3 / 2683人閱讀

摘要:面向?qū)ο缶幊痰膬?yōu)勢(shì)繼承多態(tài)封裝繼承獲取父類的全部數(shù)據(jù)和功能,實(shí)現(xiàn)的是復(fù)制。多態(tài)根據(jù)實(shí)現(xiàn)方法的對(duì)象,相同方法名具有不同的行為。封裝聚合對(duì)象數(shù)據(jù)和功能,以及限制它們和外界的聯(lián)系訪問權(quán)限。

面向?qū)ο缶幊痰母拍詈驮?/b> 1、面向?qū)ο缶幊淌鞘裁?/b>
它是用抽象的方式創(chuàng)建基于現(xiàn)實(shí)世界模型的編程模式(將數(shù)據(jù)和程序指令組合到對(duì)象中)
2、面向?qū)ο缶幊痰哪康?/b>
在編程中促進(jìn)更好的靈活性和可維護(hù)性,在大型軟件工程中廣為流行。
3、面向?qū)ο缶幊痰膬?yōu)勢(shì)(繼承、多態(tài)、封裝)
繼承:獲取父類的全部(數(shù)據(jù)和功能),實(shí)現(xiàn)的是復(fù)制。
多態(tài):根據(jù)實(shí)現(xiàn)方法的對(duì)象,相同方法名具有不同的行為。
封裝:聚合對(duì)象數(shù)據(jù)和功能,以及限制它們和外界的聯(lián)系(訪問權(quán)限)。
JS中如何實(shí)現(xiàn)面向?qū)ο缶幊蹋▍⒖迹?/b> 1、原型鏈?zhǔn)嚼^承
function Person() {
    this.name = "per"
    this.obj = {
        name: ""
    }
}
Person.prototype.getName = function() {
    return this.obj.name
}
Person.prototype.setName = function(name) {
    this.name = name
    // 引用類型的賦值會(huì)同步給所有子類
    this.obj.name = name
}
function Student() {
    
}
Student.prototype = new Person()

const stu1 = new Student()
const stu2 = new Student()

stu1.setName("stu")
stu1.getName()
stu2.getName()
缺點(diǎn):引用類型被修改時(shí)會(huì)同步給所有子類
2、構(gòu)造函數(shù)繼承
function Person() {
    this.obj = {
        name: "a"
    }
    this.setName = name => {
        this.obj.name = name
    }
    this.getName = () => {
        return this.obj.name
    }
}
function Student() {
    Person.call(this)
}
const stu1 = new Student()
const stu2 = new Student()
stu1.setName("stu")
stu1.getName()
stu2.getName()
缺點(diǎn):父類的函數(shù)在子類下面是不共享的,相當(dāng)于動(dòng)態(tài)的復(fù)制了一份代碼
3、組合繼承
function Person() {
    this.obj = {
        name: "a"
    }
}
Person.prototype.getName = function() {
    return this.obj.name
}
Person.prototype.setName = function(name) {
    this.name = name
    // 引用類型的賦值會(huì)同步給所有子類
    this.obj.name = name
}
function Student() {
    // 繼承屬性
    Person.call(this)
}
// 繼承方法
Student.prototype = new Person()
缺點(diǎn):父類內(nèi)的屬性復(fù)制執(zhí)行了兩遍
4、寄生組合式繼承
function Person() {
    this.obj = {
        name: "a"
    }
}
Person.prototype.getName = function() {
    return this.obj.name
}
Person.prototype.setName = function(name) {
    this.name = name
    // 引用類型的賦值會(huì)同步給所有子類
    this.obj.name = name
}
function Student() {
    // 繼承屬性
    Person.call(this)
}
// 這里實(shí)現(xiàn)方法的繼承
function inherit(sub, parent) {
    sub.prototype = Object.create(parent.prototype)
    sub.prototype.constructor = sub       
}
inherit(Student, Person)
這里解決了組合式繼承的父類代碼二次執(zhí)行問題
5、class實(shí)現(xiàn)繼承(參考)
class Person {
    constructor(){
        this.obj = {
            name: "a"
        }
    }
    get name() {
        return this.obj.name
    }
    set name(name) {
        this.obj.name = name
    }
}
class Student extends Person {
    constructor() {
        super()
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/52884.html

相關(guān)文章

  • 關(guān)于JS面向對(duì)象思考總結(jié)

    摘要:面向?qū)ο缶幊痰膬?yōu)勢(shì)繼承多態(tài)封裝繼承獲取父類的全部數(shù)據(jù)和功能,實(shí)現(xiàn)的是復(fù)制。多態(tài)根據(jù)實(shí)現(xiàn)方法的對(duì)象,相同方法名具有不同的行為。封裝聚合對(duì)象數(shù)據(jù)和功能,以及限制它們和外界的聯(lián)系訪問權(quán)限。 面向?qū)ο缶幊痰母拍詈驮?1、面向?qū)ο缶幊淌鞘裁?它是用抽象的方式創(chuàng)建基于現(xiàn)實(shí)世界模型的編程模式(將數(shù)據(jù)和程序指令組合到對(duì)象中) 2、面向?qū)ο缶幊痰哪康?在編程中促進(jìn)更好的靈活性和可維護(hù)性,在大型軟件工程...

    weij 評(píng)論0 收藏0
  • JS程序

    摘要:設(shè)計(jì)模式是以面向?qū)ο缶幊虨榛A(chǔ)的,的面向?qū)ο缶幊毯蛡鹘y(tǒng)的的面向?qū)ο缶幊逃行┎顒e,這讓我一開始接觸的時(shí)候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設(shè)計(jì)模式必須要先搞懂面向?qū)ο缶幊?,否則只會(huì)讓你自己更痛苦。 JavaScript 中的構(gòu)造函數(shù) 學(xué)習(xí)總結(jié)。知識(shí)只有分享才有存在的意義。 是時(shí)候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...

    melody_lql 評(píng)論0 收藏0
  • 關(guān)于javascript面向對(duì)象編程

    摘要:所以讓我們趕緊切入正題,一起來看看關(guān)于腳本的面向?qū)ο缶幊獭K韵旅孀屛覀冇眠@些特性重新寫一下上面實(shí)現(xiàn)的函數(shù),看一下更原汁原味的面向?qū)ο缶幊獭? 今天懷著忐忑的心情寫下這篇文章,因?yàn)檫@畢竟是我第一篇真正意義上的技術(shù)文章,鞏固知識(shí)的同時(shí),希望可以給閱讀的人帶來收獲,就很滿足了。所以讓我們趕緊切入正題,一起來看看關(guān)于Java腳本的面向?qū)ο缶幊獭?showImg(https://segmentf...

    Enlightenment 評(píng)論0 收藏0
  • 前端基礎(chǔ)進(jìn)階(十):面向對(duì)象實(shí)戰(zhàn)之封裝拖拽對(duì)象

    摘要:前面幾篇文章,我跟大家分享了的一些基礎(chǔ)知識(shí),這篇文章,將會(huì)進(jìn)入第一個(gè)實(shí)戰(zhàn)環(huán)節(jié)利用前面幾章的所涉及到的知識(shí),封裝一個(gè)拖拽對(duì)象。不封裝對(duì)象直接實(shí)現(xiàn)利用原生封裝拖拽對(duì)象通過擴(kuò)展來實(shí)現(xiàn)拖拽對(duì)象。 showImg(https://segmentfault.com/img/remote/1460000008699587); 前面幾篇文章,我跟大家分享了JavaScript的一些基礎(chǔ)知識(shí),這篇文章,...

    Eidesen 評(píng)論0 收藏0
  • 前端思考 - 收藏集 - 掘金

    摘要:并嘗試用為什么你統(tǒng)計(jì)的方式是錯(cuò)的掘金翻譯自工程師的文章。正如你期望的,文中的前端開發(fā)單一職責(zé)原則前端掘金單一職責(zé)原則又稱單一功能原則,面向?qū)ο笪鍌€(gè)基本原則之一。 單頁(yè)式應(yīng)用性能優(yōu)化 - 首屏數(shù)據(jù)漸進(jìn)式預(yù)加載 - 前端 - 掘金前言 針對(duì)首頁(yè)和部分頁(yè)面打開速度慢的問題,我們開始對(duì)單頁(yè)式應(yīng)用性能進(jìn)行優(yōu)化。本文介紹其中一個(gè)方案:基于 HTTP Chunk 的首屏數(shù)據(jù)漸進(jìn)式預(yù)加載方案,該方案總...

    LinkedME2016 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<