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 对象的定义方法
Jan 10 Javascript
jQuery 跨域访问问题解决方法
Dec 02 Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 Javascript
Backbone.js框架中简单的View视图编写学习笔记
Feb 14 Javascript
Javascript实现苹果悬浮虚拟按钮
Apr 10 Javascript
原生js代码实现图片放大境效果
Oct 30 Javascript
Jqprint实现页面打印
Jan 06 Javascript
vue移动端实现红包雨效果
Jun 23 Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
原生javascript单例模式的应用实例分析
Feb 23 Javascript
JS实现手风琴特效
Nov 08 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
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
写给老师的表扬信
2014/01/21 职场文书
总经理助理工作职责
2014/02/06 职场文书
维修工先进事迹
2014/05/29 职场文书
捐书倡议书
2014/08/29 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
详解python的内存分配机制
2021/05/10 Python