JS原型链和继承(包含ES6class类的继承)

JS原型链和继承(包含ES6class类的继承)

ES5原型链

        let wat = {
            name: '喵喵'
        }
        console.log(wat.__proto__)
        //对象通过__proto__属性获取原型,对象的最顶层原型为Object.__proto__为null
        var Cat = function (name, age) {
            this.name = name
            this.age = age
            this.eat = function () {
                console.log('吃鱼')
            }
            //this指向实例函数
            console.log(this)
        }
        Cat.prototype.ww = function () {
            console.log('ww')
        }
        let mm = new Cat('猫咪', '2')
        mm.eat()  //eat为实例对象自身的方法
        mm.ww()  //ww为构造函数原型上的方法
     //构造函数通过prototype属性获取原型
       var Mao = function () {
        }
        Mao.prototype = new Cat() //es5通过原型链实现继承
        let mao1 = new Mao()
        mao1.ww()
ES6继承
        class User {
            constructor(name, age) {
                this.name = name
                this.age = age
            }
            login() {
                console.login('登录')
            }
        }
        class Admin extends User {  //通过extends实现继承
            delete() {
                console.log('删除')
            }
        }
        let peo1 = new Admin('as', '22')
        console.log(peo1)
posted @ 2022-08-12 12:55  就挺秃然的  阅读(45)  评论(0)    收藏  举报