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 onkeydown,onkeyup,onkeypress,onclick,ondblclick
Feb 04 Javascript
关于javascript document.createDocumentFragment()
Apr 04 Javascript
jQuery取id有.的值的方法
May 21 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
Jun 09 Javascript
大型JavaScript应用程序架构设计模式
Jun 29 Javascript
漂亮实用的页面loading(加载)封装代码
Feb 03 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
浅析Vue项目中使用keep-Alive步骤
Jul 27 Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 Javascript
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
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 session_start()问题解疑(详细介绍)
2013/07/05 PHP
php密码生成类实例
2014/09/24 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
python中几种自动微分库解析
2019/08/29 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
电气自动化个人求职信范文
2014/02/03 职场文书
毕业生就业意向书
2014/04/01 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
2014年医务科工作总结
2014/12/18 职场文书
离职信范本
2015/06/23 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript
Python软件包安装的三种常见方法
2022/07/07 Python