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 相关文章推荐
JS中confirm,alert,prompt函数使用区别分析
Apr 01 Javascript
模仿百度三维地图的js数据分享
May 12 Javascript
jquery带翻页动画的电子杂志代码分享
Aug 21 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
Apr 28 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
AngularJS路由实现页面跳转实例
Mar 03 Javascript
Vue中添加过渡效果的方法
Mar 16 Javascript
浅谈webpack对样式的处理
Jan 05 Javascript
JS中Object对象的原型概念基础
Jan 29 Javascript
Javascript 关于基本类型和引用类型的个人理解
Nov 01 Javascript
javascript+css实现俄罗斯方块小游戏
Jun 28 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
一个程序下载的管理程序(三)
2006/10/09 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP文件操作实例总结
2016/09/27 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
小结Python的反射机制
2020/09/28 Python
python tkinter实现连连看游戏
2020/11/16 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
html5教程画矩形代码分享
2013/12/04 HTML / CSS
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
《春晓》教学反思
2014/04/20 职场文书
爱国演讲稿400字
2014/05/07 职场文书
大学军训决心书
2015/02/05 职场文书
党员转正意见怎么写
2015/06/03 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL