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代码格式化和语法着色V2
Oct 14 Javascript
javascript中用星号表示预录入内容的实现代码
Jan 08 Javascript
JavaScript的代码编写格式规范指南
Dec 07 Javascript
js实现动态显示时间效果
Mar 06 Javascript
微信小程序中hidden不生效原因的解决办法
Apr 26 Javascript
JavaScript如何对图片进行黑白化
Apr 10 Javascript
qrcode生成二维码微信长按无法识别问题的解决
Apr 04 Javascript
vue项目部署到nginx/tomcat服务器的实现
Aug 26 Javascript
jQuery AJAX应用实例总结
May 19 jQuery
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
Vue+axios封装请求实现前后端分离
Oct 23 Javascript
Vue实现boradcast和dispatch的示例
Nov 13 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微信API接口类
2016/08/22 PHP
php实现数字补零的方法总结
2018/09/12 PHP
浅谈PHP进程管理
2019/03/08 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
微信小程序版翻牌小游戏
2018/01/26 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python如何为图片添加水印
2016/11/25 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
python二维键值数组生成转json的例子
2019/12/06 Python
python如何基于redis实现ip代理池
2020/01/17 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
纪律教育学习心得体会
2014/09/02 职场文书
史上最牛的辞职信
2015/02/28 职场文书
信访维稳承诺书
2015/05/04 职场文书