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 相关文章推荐
动态添加option及createElement使用示例
Jan 26 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
Dec 10 Javascript
node.js中的fs.createWriteStream方法使用说明
Dec 17 Javascript
jQuery中ajax的get()方法用法实例
Dec 26 Javascript
jQuery遍历json中多个map的方法
Feb 12 Javascript
JavaScript中的普通函数与构造函数比较
Apr 07 Javascript
微信小程序开发之Tabbar实例详解
Jan 09 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
Dec 21 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
May 08 Javascript
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
详解用js代码触发dom事件的实现方案
Jun 10 Javascript
TS 类型收窄教程示例详解
Sep 23 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
Python threading多线程编程实例
2014/09/18 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
大学军训自我鉴定
2013/12/15 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
毕业实习单位意见
2015/06/04 职场文书
汽车车尾标语大全
2015/08/11 职场文书
2016年元旦寄语
2015/08/17 职场文书
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers