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插件
Feb 24 Javascript
10款非常有用的 Ajax 插件分享
Mar 14 Javascript
如何实现textarea里的不同文本显示不同颜色
Jan 20 Javascript
jquerymobile局部渲染的各种刷新方法小结
Mar 05 Javascript
微信小程序 wxapp内容组件 text详细介绍
Oct 31 Javascript
详解Vue.js 2.0 如何使用axios
Apr 21 Javascript
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
vue多种弹框的弹出形式的示例代码
Sep 18 Javascript
vue强制刷新组件的方法示例
Feb 28 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
Aug 26 Javascript
JS实现贪吃蛇游戏
Nov 15 Javascript
JavaScript的Set数据结构详解
Feb 18 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
Cakephp 执行主要流程
2010/03/24 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
Javascript注入技巧
2007/06/22 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
详解Python中的__init__和__new__
2014/03/12 Python
Python单链表简单实现代码
2016/04/27 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
网吧收银员岗位职责
2013/12/14 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
庆祝教师节主持词
2015/07/06 职场文书
小学语文教学随笔
2015/08/14 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python
警用民用对讲机找不同
2022/02/18 无线电