zoukankan      html  css  js  c++  java
  • Es6中关于Set新特性的应用练习(ES5和ES6实现继承的区别)

    ES5 和 ES6 继承的实现以及区别

    在ES5中当我们一个构造函数要使用另一个构造函数的属性或者方法,我们通常改变构造函数原型的指向,变成另外一个构造函数的实例对象。

    例如:

    ES5中我们通常这样去实现继承

    // 定义一个Phone的类,其中包括brand,price两个属性 
    function Phone(brand, price) {
          this.brand = brand
          this.price = price
        }
    	// 在Phone的原型上我们添加一个自己本身手机共有的功能,call
        Phone.prototype.call = function () {
          console.log('我可以打电话')
        }
    	// 又定义一个SmartPhone类,里面我们需要使用Phone的本身有的属性brand,跟price
        function SmartPhone(brand, price, color, size) {
          Phone.call(this, brand, price) //通过call 的方式 改变this的指向,这里的this就是SmartPhone的实例了,所以在											//SmartPhone的实例上面也都有了Phone里面的brand跟price属性了
          this.color = color
          this.size = size
        }
    
        SmartPhone.prototype = new Phone() // 改变SmartPhone的原型
        SmartPhone.prototype.constructor = SmartPhone
        SmartPhone.prototype.music = function () {
          console.log('我可以听歌')
        }
        SmartPhone.prototype.photo = function () {
          console.log('我可以拍照')
        }
    
        const xiaomi = new SmartPhone('xiaomi', 4999, 'red', '4.9')
        console.log(xiaomi)
    

    用ES新增的Class 的方式我们试着将代码重写一遍。。。。。,感受一下变化

    class Phone {
          constructor(brand, price) {
            this.brand = brand
            this.price = price
          }
          call() {
            console.log('我可以打电话')
          }
        }
    
        class SmartPhone extends Phone {
          constructor(brand, price, color, size) {
            super(brand, price) // 这里相当于ES中的Phone.call(this,brand,price)
            this.color = color
            this.size = size
          }
    
          music() {
            console.log('我可以听音乐')
          }
          Photo() {
            console.log('我可以拍照')
          }
        }
    
        const onPlus = new SmartPhone('1+', 2999, 'black', '5.2')
        console.log(onPlus)
    
  • 相关阅读:
    DTOJ #3702. 月读(tsukuyomi)
    DTOJ #2311. 兔子与樱花 ( sakura )
    DTOJ #2416. 点燃的火焰(flame)
    dtoi4537 「TJOI / HEOI2016」树
    中科燕园gis外包------北京市人口普查地理信息系统
    中科燕园gis外包【动态标绘演示系统】v2.0 Flex版
    中科燕园GIS外包-----基于ArcGIS的应急平台
    arcgis server
    《深入理解ES6》之箭头函数
    【转】浏览器的工作原理:新式网络浏览器幕后揭秘
  • 原文地址:https://www.cnblogs.com/comyan/p/13456332.html
Copyright © 2011-2022 走看看