ES6 class的应用实例分析


Posted in Javascript onJune 27, 2019

本文实例讲述了ES6 class的应用。分享给大家供大家参考,具体如下:

class

  • class 本身是个语法糖,主要为了考虑在编码上更加人性化
  • 内部有super,static,get 等关键词
  • 使用起来非常类似于后台语言

使用class进行类的实现应用

'use strict';
// User 类
class User {
 constructor(name,age) {
  this.name = name;
  this.age = age;
 }
 static getName() {
  return 'User';
 }
 static getAge() {
  return this.age;
 }
 setName(name) {
  this.name = name;
 }
 setAge(age) {
  this.age = age;
 }
 get info() {
  return 'name:' + this.name + ' | age:' + this.age;
 }
}
// Manager 类
class Manager extends User{
 constructor(name,age,password){
  super(name,age);
  this.password = this.password;
 }
 changePwd(pwd) {
  return this.password = pwd;
 }
 get info() {
  var info = super.info; // 使用super继承父级 get
  return info + ' === new';
 }
}
// typeof User: function typeof Manager: function
console.log('typeof User: ', typeof User, ' typeof Manager: ', typeof Manager); 
let manager = new Manager('Li', 22, '123456');
manager.setAge(23);
console.log(manager.info); // name:Li | age:23 === new
console.log(User.prototype);
console.log(Manager.prototype);

在class之前使用原型对象定义类的应用

// 构造函数
function User(name,age) {
 this.name = name;
 this.age = age;
}
// 原型
User.prototype = {
 getName:function(){
  return 'User';
 },
 setName:function(name){
  this.name = name;
 },
 getAge:function(){
  return this.age;
 },
 setAge:function(age){
  this.age = age;
 }
}
// 取值函数和存执函数
Object.defineProperty(User.prototype,'info', {
 get() {
  return 'name:' + this.name + ' | age:' + this.age;
 }
});
var user = new User('Joh', 26);
console.log(user); // User {name: "Joh", age: 26}
// 子类
function Manager(name, age, password) {
 User.call(this, name, age);
 this.password = password;
}
Manager.__proto__ = User; // 继承静态方法
Manager.prototype = Object.create(User.prototype); // 继承prototype原型方法
Manager.prototype.changePwd = function (pwd) {
 this.password = pwd;
};
var manager = new Manager('Li', 22, '123456');
manager.setAge(23);
console.log(manager.info); // name:Li | age:23
console.log(User.prototype); // 不变
console.log(Manager.prototype); // {changePwd:function(){}, info:"name:undefined | age:undefined", __proto__:指向Manager.prototype}

使用 class 定义的类不被提升,需按顺序执行

正常:

let user = new class User {
 constructor(name) {
  this.name = name;
 }
}('Joh');
console.log(user); // User {name: "Joh"}

错误:

var man = new Man(); // 此处报错,使用class声明的类不会被提升 Uncaught ReferenceError: Man is not defined
class Man {
 constructor(name){
  this.name = name;
 }
}

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 指导方针
Apr 05 Javascript
javaScript 读取和设置文档元素的样式属性
Apr 14 Javascript
网页自动跳转代码收集
Sep 27 Javascript
Jquery截取中文字符串的实现代码
Dec 22 Javascript
javascript 获取网页标题代码实例
Jan 22 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
javaScript中with函数用法实例分析
Jun 08 Javascript
Web前端开发工具——bower依赖包管理工具
Mar 29 Javascript
早该知道的7个JavaScript技巧
Jun 21 Javascript
基于vue.js实现分页查询功能
Dec 29 Javascript
微信小程序实现bindtap等事件传参
Apr 08 Javascript
微信小程序中网络请求缓存的解决方法
Dec 29 Javascript
ES6 Promise对象的应用实例分析
Jun 27 #Javascript
使用Vue 实现滑动验证码功能
Jun 27 #Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 #Javascript
javascript触发模拟鼠标点击事件
Jun 26 #Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 #Javascript
react koa rematch 如何打造一套服务端渲染架子
Jun 26 #Javascript
通过javascript实现段落的收缩与展开
Jun 26 #Javascript
You might like
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
python中管道用法入门实例
2015/06/04 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
应届生法律顾问求职信
2013/11/19 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
安全先进个人材料
2014/12/29 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android