ES6中class类用法实例浅析


Posted in Javascript onApril 06, 2017

本文实例讲述了ES6中class类用法。分享给大家供大家参考,具体如下:

类语法是ES6中新增的一个亮点特色。我们熟悉的JavaScript终于迎来了真正意义上的类。在之前,想要通过javascript来实现类,通常会采用如下构造函数的模式:

function Person(name,age,job){
 this.name = name;
 this.age = age;
 this.job = job;
 this.friends = ['Shelby','Court'];
}
Person.prototype = {
 constructor:Person,
 sayName: function(){
  document.write(this.name);
 }
}

然后通过实例化调用:

var person1 = new Person('lf',23,'software engineer');
person1.sayName();

下面看看使用ES6的类如何处理:

class Person {
 constructor(name, age, job) {
  this.name = name;
  this.age = age;
  this.job = job;
  this.friends = [‘Shelby','Court']
 }
 sayName () {
  document.write(this.name);
 }
}

可以看到简便了不少。

Class语法的推出可不光光是为了简化噢,还有很多关键字。比如:

static关键字用来定义类的静态方法,静态方法是指那些不需要对类进行实例化,使用类名就可以直接访问的方法。静态方法经常用来作为工具函数:

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
  static distance(a, b) {
    const dx = a.x - b.x;
    const dy = a.y - b.y;
    return Math.sqrt(dx*dx + dy*dy);
  }
}
const p1 = new Point(5, 5);
const p2 = new Point(10, 10);
console.log(Point.distance(p1, p2));

但是需要注意的是,ES6中不能直接定义静态成员变量,但是我们可以通过另外的方式来实现:

static get baseUrl() {
  return 'www.baidu.com'
}

在类语法推出之前,我们想要实现继承,必须通过prototype来指定对象,而现在我们可以通过extends关键字来实现继承

class Animal { 
 constructor(name) {
  this.name = name;
 }
 speak() {
  console.log(this.name + ' makes a noise.');
 }
}
class Dog extends Animal {
 speak() {
  console.log(this.name + ' barks.');
 }
}

但是需要注意的一点就是,继承的原理还是在利用prototype这点没有变,只不过extends裹了一层语法糖而已。

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
JS 操作符整理[推荐收藏]
Nov 15 Javascript
无缝滚动js代码通俗易懂(自写)
Jun 19 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
Dec 18 Javascript
简介JavaScript中Boolean.toSource()方法的使用
Jun 05 Javascript
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
Mar 11 Javascript
jQuery代码性能优化的10种方法
Jun 21 Javascript
JavaScript中的工厂函数(推荐)
Mar 08 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
Mar 01 Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 Javascript
ES6中Proxy代理用法实例浅析
Apr 06 #Javascript
ES6中Symbol类型用法实例详解
Apr 06 #Javascript
vue中mint-ui环境搭建详细介绍
Apr 06 #Javascript
B/S(Web)实时通讯解决方案分享
Apr 06 #Javascript
HTML中使背景图片自适应浏览器大小实例详解
Apr 06 #Javascript
ES6中的箭头函数实例详解
Apr 06 #Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
Apr 06 #Javascript
You might like
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
PHP修改session_id示例代码
2014/01/08 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
python实现QQ批量登录功能
2019/06/19 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
python计算二维矩形IOU实例
2020/01/18 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
python中pyplot基础图标函数整理
2020/11/10 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
初中班主任评语大全
2014/04/24 职场文书
田径运动会广播稿
2015/08/19 职场文书
民事调解协议书
2016/03/21 职场文书
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js