zoukankan      html  css  js  c++  java
  • 002-ES6Class和普通构造函数的区别

    ES5之前的构造函数

    function MathHandle(x, y) {
    this.x = x
    this.y = y
    }
    
    MathHandle.prototype.add = function () {
    return this.x + this.y
    }
    
    var m = new MathHandle(1, 2)
    
    
    typeof MathHandle // 'function'
    MathHandle.prototype.constructor === MathHandle // true
    m.__proto__ === MathHandle.prototype // true

    ES6  class重写

    class MathHandle {
        constructor(x, y) {
            this.x = x
            this.y = y
        }
        add() {
            return this.x + this.y
        }
    }
    
    const m = new MathHandle(1, 2)
    
    console.log(typeof MathHandle)  // 'function'
    console.log(MathHandle.prototype.constructor === MathHandle)  // true
    console.log(m.__proto__ === MathHandle.prototype)  // true

    从以上可以看出ES6的class只是ES5构造函数的语法糖


    ES5简单继承实现

    // 动物
    function Animal() {
        this.eat = function () {
            alert('Animal eat')
        }
    }
    
    //
    function Dog() {
        this.bark = function () {
            alert('Dog bark')
        }
    }
    
    // 绑定原型,实现继承
    Dog.prototype = new Animal()
    
    var hashiqi = new Dog()
    hashiqi.bark()
    hashiqi.eat()

    ES6继承的实现

    class Animal {
        constructor(name) {
            this.name = name
        }
        eat() {
            alert(this.name + ' eat')
        }
    }
    
    class Dog extends Animal {
        constructor(name) {
            super(name)   // 注意 !!!
            this.name = name
        }
        say() {
            alert(this.name + ' say')
        }
    }
    
    const dog = new Dog('哈士奇')
    dog.say()//哈士奇say
    dog.eat()//哈士奇eat

    Class 在语法上更加贴合面向对象的写法
    Class 实现继承更加易读、易理解
    更易于写 java 等后端语言的使用
    本质还是语法糖,使用 prototype

     2019-05-09

    工欲善其事,必先利其器
  • 相关阅读:
    百家号开发文档测试
    python使用selenium模拟登录网易
    python使用selenium模拟操作Chrome浏览器
    java 解析网易邮箱里面的附件地址,获取下载地址
    python连接hive
    linux重定向标准输入输出,标准错误
    linux 查看网络流量命令
    kafka源码阅读环境搭建
    tomcat启动index页面显示不出来
    git学习笔记
  • 原文地址:https://www.cnblogs.com/ccbest/p/10838988.html
Copyright © 2011-2022 走看看