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 相关文章推荐
SUN的《AJAX与J2EE》全文译了
Feb 23 Javascript
关于JavaScript的with 语句的使用方法
May 09 Javascript
js replace正则表达式应用案例讲解
Jan 17 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
Jun 15 Javascript
js实现文本框宽度自适应文本宽度的方法
Aug 13 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
jQuery实现一个简单的轮播图
Feb 19 Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 Javascript
VUE元素的隐藏和显示(v-show指令)
Jun 23 Javascript
Less 安装及基本用法
May 05 Javascript
解决Angular4项目部署到服务器上刷新404的问题
Aug 31 Javascript
JS实现电话号码的字母组合算法示例
Feb 26 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
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
python正则实现提取电话功能
2018/02/24 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
Pytorch的mean和std调查实例
2020/01/02 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
美国知名艺术画网站:Art.com
2017/02/09 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
高三自我鉴定
2013/10/23 职场文书
成绩单评语
2015/01/04 职场文书
python实现简单的名片管理系统
2021/04/26 Python