【学记】通过__proto__让函数继承另一个函数上的方法

127 阅读1分钟

前言

学习class时,发现父类class里定义的static 函数,会被其子类所继承,因为class是一个语法糖,本质还是用构造函数来实现的,所以就思考能不能用构造函数来实现这一功能

先来瞅瞅class

class Father {
    constructor(name) {
        this.name = name
    }
    static sayHi() {
        console.log('hi')
    }
}

class Son extends Father {
    constructor(name) {
        super(name);
    }
}
Father.sayHi(); //hi
Son.sayHi(); //hi
console.log(Father===Son.__proto__); //true

这里很明显father函数对象被赋予了son函数的__proto__,所以son能通过原型链使用sayHi方法

康康用构造函数怎么弄

function Father(){}
function Son(){}
Father.sayHi = ()=>{
    console.log('hi')
}
Son.__proto__ = Father
Son.sayHi() //hi