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 相关文章推荐
jQuery帮助之筛选查找 children([expr])
Jan 31 Javascript
基于jQuery的为attr添加id title等效果的实现代码
Apr 20 Javascript
js控制表单操作的常用代码小结
Aug 15 Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 Javascript
javascript根据像素点取位置示例
Jan 27 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
JavaScript禁止复制与粘贴的实现代码
May 16 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
Mar 29 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
Apr 19 Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
Python 初始化多维数组代码
2008/09/06 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
Python中 map()函数的用法详解
2018/07/10 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
基于python代码批量处理图片resize
2020/06/04 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
比利时家具购买网站:Home24
2019/01/03 全球购物
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
教师党员思想汇报
2014/01/06 职场文书
一年级家长会邀请函
2014/01/25 职场文书
文明寄语大全
2014/04/11 职场文书
《观舞记》教学反思
2014/04/16 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python