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入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 Javascript
JSON 编辑器实现代码
Dec 06 Javascript
查看图片(前进后退)功能实现js代码
Apr 24 Javascript
JS实现多物体缓冲运动实例代码
Nov 29 Javascript
JS实现图片剪裁并预览效果
Aug 12 Javascript
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
vue如何判断dom的class
Apr 26 Javascript
vux uploader 图片上传组件的安装使用方法
May 15 Javascript
20个最常见的jQuery面试问题及答案
May 23 jQuery
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
微信小程序自定义头部导航栏(组件化)
Nov 15 Javascript
jQuery实现滑动开关效果
Aug 02 jQuery
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
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
两个php日期控制类实例
2014/12/09 PHP
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
jQuery基础知识小结
2014/12/22 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
简单了解Python中的几种函数
2017/11/03 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
给分销商的致歉信
2014/01/14 职场文书
秘书英文求职信
2014/04/16 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
法人授权委托书范本
2014/09/17 职场文书
十八大标语口号
2014/10/09 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
业余无线电通联Q语
2022/02/18 无线电