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

資訊專欄INFORMATION COLUMN

JS類與類繼承

shixinzhang / 3308人閱讀

摘要:構(gòu)造類以及繼承構(gòu)造函數(shù)方法該種方式下的繼承封裝一個(gè)函數(shù)綁定復(fù)制繼承對(duì)象創(chuàng)建方法類的實(shí)現(xiàn)該種方式下的繼承極簡(jiǎn)主義法實(shí)現(xiàn)一個(gè)類睡覺(jué)睡覺(jué)類的私有屬性和方法在方法中,只要不是定義在對(duì)象上的方法和屬性,都是私有的該變量只能通過(guò)公有方法來(lái)讀取類的數(shù)據(jù)共

構(gòu)造類以及繼承 構(gòu)造函數(shù)方法
function Person(name) {
    this.name = name
}

Person.prototype.species = "human"
Person.prototype.sayName = {
    alert(this.name)
}

let person = new Person()

person.sayName()

該種方式下的繼承

(1)封裝一個(gè)函數(shù)

function extend (child, Parent) {
    let F = function(){}
    F.prototype = Parent.prototype
    child.prototype = new F()
    child.prototype.constructor = child
}
function Man (name) {this.name = name}
extend(Man, Person)
let man1 = new Man("ziv")
console.log(man1.species) // human

(2)綁定

function Man () {
    Person.call(this, arguments) // call,apply,bind
}

(3)復(fù)制繼承

function Man () {}
for (let prop in Person.prototype) {
    // 
    Man.prototype[prop] = Person.prototype[prop]
}

Man.prototype.constructor = Man
對(duì)象創(chuàng)建方法
let Person = {
    name: "michal",
    sayName: function() {
        alert(this.name)
    }
}

let person = Object.create(Person)
person.sayName()
class類的實(shí)現(xiàn)
class Point {
    constructor(x, y) {
        this.x = x
        this.y = y
    }
    toString() {
        return `( ${this.x} ,${this.y} )`
    }
}

該種方式下的繼承

class micPoint extends Point(x, y, z) {
    constructor() {
        super(x, y)
        this.z = z    
    }
    toString () {
        return this.z + "" + super.toString()
    }
    
}

let point = new Point(2, 3)
極簡(jiǎn)主義法

實(shí)現(xiàn)一個(gè)類

let Animal = {
    createNew: function() {
        let animal = {}
        animal.name = "animal"
        animal.sleep = function() {console.log("睡覺(jué)")}
        return animal
    }
}
let animal1 = Animal.createNew()
animal1.sleep() // 睡覺(jué)

類的私有屬性和方法

let Cat = {
    createNew: function() {
        let cat = {}
        // 在createNew()方法中,只要不是定義在cat對(duì)象上的方法和屬性,都是私有的
        let sound = "miaomiao" // 該sound變量只能通過(guò)公有方法makeSound()來(lái)讀取
        cat.makeSound = function (){console.log(sound)}
        return cat
    }
}
let cat2 = Cat.createNew()
console.log(cat2.sound) // undefined

類的數(shù)據(jù)共享

let Cat = {
    sound: "喵喵"
    createNew: function(){
        let cat = {}
        cat.makeSound = function(){console.log(Cat.sound)}
        cat.changeSound = function(x){Cat.sound = x}
        return cat
    }
}
let cat1 = Cat.createNew()
let cat2 = Cat.createNew()
cat1.makeSound() // 喵喵
cat2.changeSound("汪汪") // 修改了共享的數(shù)據(jù),另一個(gè)實(shí)例對(duì)象也會(huì)受到影響
cat1.makeSound() // 汪汪 

該種方式下的繼承實(shí)現(xiàn)

let Cat = {
    createNew: function() {
        let cat = Animal.createNew()
        cat.name = "miao"
       
        cat.makeSound = function () {console.log("喵喵")}
        return cat
    }
}

let cat1 = Cat.createNew() // 該實(shí)例會(huì)繼承Cat和Animal類
cat1.sleep() // 睡覺(jué)

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

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

相關(guān)文章

  • JS中的與類繼承

    摘要:首先捋清楚類和對(duì)象的關(guān)系類比如人類,指的是一個(gè)范圍對(duì)象比如某個(gè)人,指的是這個(gè)范圍中具體的對(duì)象中的作為構(gòu)造函數(shù)時(shí),就是一個(gè)類,通過(guò)操作符,可以返回一個(gè)對(duì)象。 JS中的類與類的繼承 我們知道,JS中沒(méi)有類或接口的概念,即不能直接定義抽象的類,也不能直接實(shí)現(xiàn)繼承。不過(guò),為了編程的方便,我們可以在 JS 中模擬類和繼承的行為。首先捋清楚類和對(duì)象的關(guān)系: 類:比如人類,指的是一個(gè)范圍; ...

    Tangpj 評(píng)論0 收藏0
  • java學(xué)習(xí)(三) —— 面對(duì)對(duì)象

    摘要:前言是面對(duì)對(duì)象的語(yǔ)言,因此有必要單獨(dú)紀(jì)錄下對(duì)象的各種定義和理解。面對(duì)對(duì)象基本概述概述是基于面向過(guò)程的變成思想,是對(duì)面向過(guò)程的一種封裝。面對(duì)對(duì)象開(kāi)發(fā)就是不斷的創(chuàng)建對(duì)象,使用對(duì)象,指揮對(duì)象做事情。面對(duì)對(duì)象設(shè)計(jì)其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。 前言 java是面對(duì)對(duì)象的語(yǔ)言,因此有必要單獨(dú)紀(jì)錄下對(duì)象的各種定義和理解。 面對(duì)對(duì)象,主要包括:面向?qū)ο笏枷?,類與對(duì)象及其使用,對(duì)象的內(nèi)存圖,成...

    褰辯話 評(píng)論0 收藏0
  • php面向?qū)ο笤斀?/b>

    摘要:前言自從進(jìn)入版本以來(lái),開(kāi)始全面地支持面向?qū)ο缶幊獭:昧?,進(jìn)入正題,面向?qū)ο蟮娜筇匦苑謩e是封裝性,繼承性以及多態(tài)性,使用面向?qū)ο箝_(kāi)發(fā),讓我們的程序可維護(hù)以及擴(kuò)展性大大提高。 showImg(https://segmentfault.com/img/remote/1460000012257579?w=1920&h=1080); 前言 自從php進(jìn)入5.0版本以來(lái),PHP開(kāi)始全面地支持面向...

    xingpingz 評(píng)論0 收藏0
  • Java編程基礎(chǔ)10——面向?qū)ο骭多態(tài)&抽象類&接口

    摘要:案例演示抽象類的成員特點(diǎn)抽象類的成員方法特性抽象方法強(qiáng)制要求子類做的事情。抽象類中定義的是該繼承體系的共性功能。 1.多態(tài)的概述及其成員訪問(wèn)特點(diǎn)代碼體現(xiàn) A:多態(tài)(polymorphic)概述 事物存在的多種形態(tài) B:多態(tài)前提- 1.要有繼承關(guān)系 2.要有方法重寫(xiě) 3.要有父類引用指向子類對(duì)象。 C:多態(tài)中的成員訪問(wèn)特點(diǎn)之 成員變量:編譯和運(yùn)行都看父類。 成員方法:編...

    dunizb 評(píng)論0 收藏0
  • 設(shè)計(jì)模式之軟件設(shè)計(jì)七大原則

    摘要:引申意義子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。含義當(dāng)子類的方法實(shí)現(xiàn)父類的方法時(shí)重寫(xiě)重載或?qū)崿F(xiàn)抽象方法,方法的后置條件即方法的輸出返回值要比父類更嚴(yán)格或相等。優(yōu)點(diǎn)約束繼承泛濫,開(kāi)閉原則的一種體現(xiàn)。降低需求變更時(shí)引入的風(fēng)險(xiǎn)。 0x01.開(kāi)閉原則 定義:一個(gè)軟件實(shí)體如類,模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉 要點(diǎn): 當(dāng)變更發(fā)生時(shí),不要直接修改類,而是通過(guò)繼承擴(kuò)展的方式完成變...

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

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

0條評(píng)論

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