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 相关文章推荐
javascript开发中因空格引发的错误
Nov 08 Javascript
打造基于jQuery的高性能TreeView(asp.net)
Feb 23 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
Apr 02 Javascript
node.js中的console用法总结
Dec 15 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
Sep 09 Javascript
微信小程序 教程之注册页面
Oct 17 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
ionic环境配置及问题详解
Jun 27 Javascript
基于js中的原型(全面讲解)
Sep 19 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
Mar 28 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 Javascript
多个Vue项目部署到服务器的步骤记录
Oct 22 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
PHP4中session登录页面的应用
2008/07/25 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
php curl_init函数用法
2014/01/31 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
python获得一个月有多少天的方法
2015/06/04 Python
python记录程序运行时间的三种方法
2017/07/14 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
Python中的self用法详解
2019/08/06 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
高三毕业生自我鉴定
2013/12/20 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
四风存在的原因分析
2014/02/11 职场文书
节能环保口号
2014/06/12 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技