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 相关文章推荐
javascript import css实例代码
Jul 18 Javascript
CCPry JS类库 代码
Oct 30 Javascript
XENON基于JSON变种
Jul 27 Javascript
brook javascript框架介绍
Oct 10 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
判断文件是否正在被使用的JS代码
Dec 21 Javascript
收集json解析的四种方法分享
Jan 17 Javascript
JavaScript DOM基础
Apr 13 Javascript
Knockout自定义绑定创建方法
Dec 26 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
Aug 14 Javascript
layui在form表单页面通过Validform加入简单验证的方法
Sep 06 Javascript
微信小程序select下拉框实现源码
Nov 08 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
javascript模块化简单解析
2016/04/07 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
微信JS接口大全
2016/08/25 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
python计算时间差的方法
2015/05/20 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
大学生表扬信范文
2014/01/09 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
先进学校事迹材料
2014/12/30 职场文书
师德承诺书2015
2015/04/28 职场文书
旗帜观后感
2015/06/08 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
HTML基本元素标签介绍
2022/02/28 HTML / CSS
MySQL批量更新不同表中的数据
2022/05/11 MySQL