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 简便实现页面元素数据验证功能
Mar 24 Javascript
javascript操作文本框readOnly
May 15 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
Feb 16 Javascript
用客户端js实现带省略号的分页
Apr 27 Javascript
不使用浏览器运行javascript代码的方法
Jul 24 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
Oct 30 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
May 15 Javascript
JavaScript里 ==与===区别详解
Aug 16 Javascript
React Native预设占位placeholder的使用
Sep 28 Javascript
详解关于vue2.0工程发布上线操作步骤
Sep 27 Javascript
仿ElementUI实现一个Form表单的实现代码
Apr 23 Javascript
微信小程序使用字体图标的方法
May 23 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
自己动手做一个SQL解释器
2006/10/09 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
Python图算法实例分析
2016/08/13 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
Python实现FLV视频拼接功能
2020/01/21 Python
500行python代码实现飞机大战
2020/04/24 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
Python logging模块handlers用法详解
2020/08/14 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
如何做好总经理助理
2013/11/12 职场文书
上班早退检讨书
2014/01/09 职场文书
学生打架检讨书大全
2014/01/23 职场文书
社区维稳工作方案
2014/06/06 职场文书
销售类求职信
2014/06/13 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
总结几个非常实用的Python库
2021/06/26 Python