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 相关文章推荐
用js实现多域名不同文件的调用方法
Jan 12 Javascript
Javascript document.referrer判断访客来源网址
May 15 Javascript
页面回到顶部的三种实现(锚标记,js)
Oct 01 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
Jun 03 Javascript
jQuery判断checkbox是否选中的3种方法
Aug 12 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
Aug 29 Javascript
原生JS+Canvas实现五子棋游戏
May 28 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 Javascript
Vue 动态设置路由参数的案例分析
Apr 24 Javascript
微信小程序swiper实现文字纵向轮播提示效果
Jan 21 Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
Jul 18 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
深入apache host的配置详解
2013/06/09 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
Python并行分布式框架Celery详解
2018/10/15 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
应届生幼儿园求职信
2013/11/12 职场文书
生产文员岗位职责
2014/04/05 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
运动员口号
2014/06/09 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
故宫导游词
2015/01/31 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
外科护士长工作总结
2015/08/12 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
MySQL去除密码登录告警的方法
2022/04/20 MySQL
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers