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字符串插入、删除、替换函数使用示例
Jul 25 Javascript
用js的for循环获取radio选中的值
Oct 21 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
浅析JavaScript中的事件机制
Jun 04 Javascript
全面解析Bootstrap中transition、affix的使用方法
May 30 Javascript
AngularJS入门教程之模块化操作用法示例
Nov 02 Javascript
jQuery 如何实现一个滑动按钮开关
Dec 01 Javascript
canvas绘制一个常用的emoji表情
Mar 30 Javascript
js学使用setTimeout实现轮循动画
Jul 17 Javascript
JS验证输入的是否是数字及保留几位小数问题
May 09 Javascript
解决vue初始化项目一直停在downloading template的问题
Nov 09 Javascript
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 Vue.js
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/04/27 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
Python 3中print函数的使用方法总结
2017/08/08 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
露营世界:Camping World
2017/02/02 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
个人实用的自我评价范文
2013/11/23 职场文书
亲属关系公证书
2014/04/08 职场文书
经典团队口号
2014/06/06 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
计划生育工作总结2015
2015/04/03 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL