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 wmp操作代码小结(音乐连播功能)
Nov 08 Javascript
js实现的标题栏新消息闪烁提示效果
Jun 06 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
使用node.js 制作网站前台后台
Nov 13 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
jquery获取复选框checkbox的值实现方法
May 30 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
简单实现jQuery弹幕效果
May 06 jQuery
vue项目中v-model父子组件通信的实现详解
Dec 10 Javascript
在 React、Vue项目中使用SVG的方法
Feb 09 Javascript
JavaScript中创建原子的方法总结
Aug 26 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 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
杏林同学录(三)
2006/10/09 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
利用python3随机生成中文字符的实现方法
2017/11/24 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
护理专科毕业推荐信
2013/11/10 职场文书
校长岗位职责
2013/11/26 职场文书
公司司机岗位职责
2014/02/07 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
接待员岗位职责范本
2015/04/15 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书