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 相关文章推荐
解读IE和firefox下JScript和HREF的执行顺序
Jan 12 Javascript
jQuery对象和DOM对象相互转化
Apr 24 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
Nov 26 Javascript
JS+Canvas绘制时钟效果
Aug 20 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
Jun 01 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
Dec 14 Javascript
微信小程序 设置启动页面的两种方法
Mar 09 Javascript
Vue中父组件向子组件通信的方法
Jul 11 Javascript
React 组件间的通信示例
Jun 14 Javascript
使用typescript快速开发一个cli的实现示例
Dec 09 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 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
写一个用户在线显示的程序
2006/10/09 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
smarty简单应用实例
2015/11/03 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
解决vue router组件状态刷新消失的问题
2018/08/01 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
Python解析最简单的验证码
2016/01/07 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
python异步存储数据详解
2019/03/19 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python实现大文件分割与合并
2019/07/22 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
美国电视购物:QVC
2017/02/06 全球购物
SQL SERVER面试资料
2013/03/30 面试题
计算机毕业大学生推荐信
2013/12/01 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
硕士学位论文评语
2014/12/31 职场文书
大连星海广场导游词
2015/02/10 职场文书
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS