ES6 javascript中class类的get与set用法实例分析


Posted in Javascript onOctober 30, 2017

本文实例讲述了ES6 javascript中class类的get与set用法。分享给大家供大家参考,具体如下:

与 ES5 一样, 在 Class 内部可以使用get和set关键字, 对某个属性设置存值函数和取值函数, 拦截该属性的存取行为。

class MyClass {
  constructor() {
    // ...
  }
  get prop() {
    return 'getter';
  }
  set prop(value) {
    console.log('setter: ' + value);
  }
}
let inst = new MyClass();
inst.prop = 123;
// setter: 123
inst.prop
// 'getter'

上面代码中, prop属性有对应的存值函数和取值函数, 因此赋值和读取行为都被自定义了。

存值函数和取值函数是设置在属性的 descriptor 对象上的。

class CustomHTMLElement {
  constructor(element) {
    this.element = element;
  }
  get html() {
    return this.element.innerHTML;
  }
  set html(value) {
    this.element.innerHTML = value;
  }
}
var descriptor = Object.getOwnPropertyDescriptor(
  CustomHTMLElement.prototype, "html");
"get" in descriptor // true
  "set" in descriptor // true

上面代码中, 存值函数和取值函数是定义在html属性的描述对象上面, 这与 ES5 完全一致。

更多相关内容可查看本站专题:《ECMAScript6(ES6)入门教程》、《JavaScript数组操作技巧总结》、《JavaScript字符与字符串操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript错误与调试技巧总结》及《javascript面向对象入门教程》

希望本文所述对大家基于ECMAScript的程序设计有所帮助。

Javascript 相关文章推荐
在javascript中执行任意html代码的方法示例解读
Dec 25 Javascript
jquery文本框中的事件应用以输入邮箱为例
May 06 Javascript
jQuery检测输入的字符串包含的中英文的数量
Apr 17 Javascript
浅谈JavaScript对象的创建方式
Jun 13 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
Jul 25 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
vue实现计算器功能
Feb 22 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
Apr 09 Javascript
vue+elementUI实现简单日历功能
Sep 24 Javascript
vue中使用腾讯云Im的示例
Oct 23 Javascript
JavaScript WeakMap使用详解
Feb 05 Javascript
原生JS与jQuery编写简单选项卡
Oct 30 #jQuery
简单实现jQuery弹窗效果
Oct 30 #jQuery
Bootstrap栅格系统的使用详解
Oct 30 #Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
Oct 30 #Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 #Javascript
JavaScript实现精美个性导航栏筋斗云效果
Oct 29 #Javascript
vue中的scope使用详解
Oct 29 #Javascript
You might like
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
Python读取Excel的方法实例分析
2015/07/11 Python
Python制作爬虫采集小说
2015/10/25 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
大学生个人求职口试自我评价
2014/02/16 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
学习经验交流会策划书
2015/11/02 职场文书