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 Event学习补遗 addEventSimple
Feb 11 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
Jun 23 Javascript
微信jssdk用法汇总
Jul 16 Javascript
总结十个Angular.js由浅入深的面试问题
Aug 26 Javascript
浅谈js数组和splice的用法
Dec 04 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
Vue中使用clipboard实现复制功能
Sep 05 Javascript
laravel实现中文和英语互相切换的例子
Sep 30 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 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
UCenter Home二次开发指南
2009/05/28 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
php无限级分类实现方法分析
2016/10/19 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
javascript 面向对象编程基础:继承
2009/08/21 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
js基于canvas实现时钟组件
2021/02/07 Javascript
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
python中requests小技巧
2017/05/10 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
耐克亚太地区:Nike APAC
2019/12/07 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
自主招生自荐信
2013/12/08 职场文书
植树节活动总结
2014/04/30 职场文书
圣诞晚会主持词
2015/07/01 职场文书
早恋主题班会
2015/08/14 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript