js中getter和setter用法实例分析


Posted in Javascript onAugust 14, 2018

本文实例讲述了js中getter和setter用法。分享给大家供大家参考,具体如下:

在学习Vue计算属性时,有一句“计算属性默认只有 getter ,不过在需要时你也可以提供一个 setter”。

getter和setter到底是什么?于是我查找了资料:

在Es5中可以使用getter和setter部分改写默认操作,但是只能应用在单个属性上,无法应用在整个对象上。getter是一个隐藏函数,会在获取属性值时调用。setter也是一个隐藏属性,会在设置属性值时调用。

例子:

var myObject = {
  get a(){
    return 2
  }
  };
  Object.defineProperty(
  myObject,       //目标对象
  "b",          //属性名
  {  //描述符
    //给b设置一个getter
    get:function(){
    return this.a*2
     },
    //确保b会出现在对象的属性列表中
    enumerable:true
  }
);
console.log(myObject.a) //2
console.log(myObject.b) //4

这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun,测试结果如下:

js中getter和setter用法实例分析

不管是对象文字语法中的get a( ) { ...... },还是defineProperty(......)中的显式定义,二者都会在对象中创建一个不包含值的属性,对于这个属性的访问会自动调用一个隐藏函数,它的返回值会被当作属性访问的返回值。(也就是说myObject.a不用加执行括号,vue中计算属性默认有getter,调用计算属性不用在后面加"( )")

var obj = {
  //给a定义一个getter
  get a(){
  return 2;
  }
};
obj.a = 3;
console.log(obj.a); //2

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun,测试结果如下:

js中getter和setter用法实例分析

由于对a只定义了getter,所以对a的set操作会忽略赋值操作,不会抛错。而且即便有合法的setter,由于我们自定义的getter只会返回2,所以set操作是没有意义的。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JS实现self的resend
Jul 22 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
Feb 07 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
JS插件plupload.js实现多图上传并显示进度条
Nov 29 Javascript
微信小程序 WebSocket详解及应用
Jan 21 Javascript
Vuex之理解state的用法实例
Apr 19 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
js实现图片放大展示效果
Aug 30 Javascript
Vue列表渲染的示例代码
Nov 01 Javascript
layui自定义工具栏的方法
Sep 19 Javascript
简单了解vue中的v-if和v-show的区别
Oct 08 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 #Javascript
Vue.js单向绑定和双向绑定实例分析
Aug 14 #Javascript
微信小程序异步API为Promise简化异步编程的操作方法
Aug 14 #Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 #jQuery
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 #jQuery
layui的table单击行勾选checkbox功能方法
Aug 14 #Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 #Javascript
You might like
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
JQuery实现自定义对话框的代码
2008/06/15 Javascript
checkbox 复选框不能为空
2009/07/11 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
Python多线程爬虫简单示例
2016/03/04 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
django 模版关闭转义方式
2020/05/14 Python
python urllib和urllib3知识点总结
2021/02/08 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
往来会计岗位职责
2013/12/19 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
计算机教师工作总结
2015/08/13 职场文书
Python实现机器学习算法的分类
2021/06/03 Python
Java基础-封装和继承
2021/07/02 Java/Android
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript