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 相关文章推荐
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
div失去焦点事件实现思路
Apr 22 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
js点击文本框后才加载验证码实例代码
Oct 20 Javascript
js无法获取到html标签的属性的解决方法
Jul 26 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
vue 点击按钮实现动态挂载子组件的方法
Sep 07 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
Sep 05 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
Sep 26 Javascript
vue-cli和v-charts实现可视化图表过程解析
Oct 08 Javascript
vue-element-admin 菜单标签失效的解决方式
Nov 12 Javascript
五句话帮你轻松搞定js原型链
Dec 09 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
PHP数组相关函数汇总
2015/03/24 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
Python之自动获取公网IP的实例讲解
2017/10/01 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
python实现打砖块游戏
2020/02/25 Python
python中取绝对值简单方法总结
2020/07/24 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
pandas实现导出数据的四种方式
2020/12/13 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
局域网定义和特性
2016/01/23 面试题
大学生护理专业自荐信
2013/10/03 职场文书
高中同学会致辞
2015/08/01 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android