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 相关文章推荐
初窥JQuery(一)jquery选择符 必备知识点
Nov 25 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
jQuery实现左右切换焦点图
Apr 03 Javascript
jQuery实现的调整表格行tr上下顺序
Jan 10 Javascript
AngularJS入门教程之路由与多视图详解
Aug 19 Javascript
Ionic2开发环境搭建教程
Aug 20 Javascript
原生JS 购物车及购物页面的cookie使用方法
Aug 21 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
vue多页面开发和打包正确处理方法
Apr 20 Javascript
vue组件实现进度条效果
Jun 06 Javascript
JS如何实现动态添加的元素绑定事件
Nov 12 Javascript
js实现select下拉框选择
Jan 11 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
sphinx增量索引的一个问题
2011/06/14 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
jquery中$.post()方法的简单实例
2014/02/04 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
浅谈js的异步执行
2016/10/18 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
jquery与js实现全选功能的区别
2017/06/11 jQuery
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
js实现图片3D轮播效果
2019/09/21 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
python 正则表达式 概述及常用字符
2009/05/04 Python
Python实现的弹球小游戏示例
2017/08/01 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
django 外键model的互相读取方法
2018/12/15 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
标准导师推荐信(医学类)
2013/10/28 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
银行贷款委托书范本
2014/10/11 职场文书
python_tkinter弹出对话框创建
2022/03/20 Python