博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
002-ES6Class和普通构造函数的区别
阅读量:5342 次
发布时间:2019-06-15

本文共 1408 字,大约阅读时间需要 4 分钟。

ES5之前的构造函数

function MathHandle(x, y) {this.x = xthis.y = y}MathHandle.prototype.add = function () {return this.x + this.y}var m = new MathHandle(1, 2)typeof MathHandle // 'function'MathHandle.prototype.constructor === MathHandle // truem.__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)  // trueconsole.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()//哈士奇saydog.eat()//哈士奇eat

Class 在语法上更加贴合面向对象的写法

Class 实现继承更加易读、易理解
更易于写 java 等后端语言的使用
本质还是语法糖,使用 prototype

 2019-05-09

转载于:https://www.cnblogs.com/ccbest/p/10838988.html

你可能感兴趣的文章
[HIHO1184]连通性二·边的双连通分量(双连通分量)
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
DataGrid 点击 获取 行 ID
查看>>
git 使用
查看>>
边框圆角方法
查看>>
asp.net WebApi自定义权限验证消息返回
查看>>
php中eval函数的危害与正确禁用方法
查看>>
20172315 2017-2018-2 《程序设计与数据结构》第十一周学习总结
查看>>
MySQL添加、修改、撤销用户数据库操作权限的一些记录
查看>>
ViewBag & ViewData
查看>>
关于谷歌浏览器Chrome正在处理请求的问题解决
查看>>
Git核心技术:在Ubuntu下部署Gitolite服务端
查看>>
平面波展开法总结
查看>>
建造者模式
查看>>
ArraySort--冒泡排序、选择排序、插入排序工具类demo
查看>>
composer 安装laravel
查看>>
8-EasyNetQ之Send & Receive
查看>>