鍍金池/ 問答/HTML/ js call的繼承方式,為什么刪除call只通過new也是可以實(shí)現(xiàn)繼承的?

js call的繼承方式,為什么刪除call只通過new也是可以實(shí)現(xiàn)繼承的?

    function Base() {
        this.name='name'
        this.age=18
    }
    Base.prototype={
        say() {
            alert('hi')
        },
        ex:'lucy'
    }
    function Student() {
        Base.call(this,arguments)//////  刪除這句話也可以,為什么??????
        this.add='US'
    }
    Student.prototype=new Base()//只通過這個(gè)就行,那還要上面的call有什么用?
    
    let tom=new Student()
    tom.say()
回答
編輯回答
悶油瓶

JS的繼承有多種 有原型對象繼承 有修改構(gòu)造函數(shù)繼承 ,

2017年3月19日 08:27
編輯回答
青檸

刪除如下代碼

Base.call(this,arguments)//////  刪除這句話也可以,為什么??????

有沒有上面的代碼,tom這個(gè)變量的內(nèi)容是不一樣的。不知道你有沒有發(fā)現(xiàn)。
本質(zhì)上,如果不寫這行代碼的話,base 的構(gòu)造函數(shù)不會(huì)執(zhí)行,如果你不需要父類構(gòu)造函數(shù)的邏輯,這樣沒有問題。
但是我猜你肯定需要的吧。

希望我的回答對你有幫助。 我的個(gè)人主頁是https://azl397985856.github.io/ , 掘金主頁?https://juejin.im/user/58af98...??

2017年2月13日 05:44
編輯回答
淡墨
Base.call(this,arguments)

這句話是執(zhí)行父類的構(gòu)造函數(shù),等同于class中的super()

2017年7月1日 14:10