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 相关文章推荐
jQuery 可以拖动的div实现代码 脚本之家修正版
Jun 26 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
Apr 02 Javascript
js中查找最近的共有祖先元素的实现代码
Dec 30 Javascript
JavaScript 里的类数组对象
Apr 08 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
Apr 12 Javascript
jquery任意位置浮动固定层插件用法实例
May 29 Javascript
介绍JavaScript中Math.abs()方法的使用
Jun 14 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
原生JS实现圆环拖拽效果
Apr 07 Javascript
浅谈关于.vue文件中style的scoped属性
Aug 19 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
Oct 26 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
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
javascript globalStorage类代码
2009/06/04 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
Python聚类算法之基本K均值实例详解
2015/11/20 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
python tornado微信开发入门代码
2018/08/24 Python
利用nohup来开启python文件的方法
2019/01/14 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
汽车专业毕业生自荐信
2013/11/03 职场文书
医院实习接收函
2014/01/12 职场文书
岗位说明书范文
2014/05/07 职场文书
酒店节能降耗方案
2014/05/08 职场文书
应聘教师自荐书
2014/06/16 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
幼师自荐信范文
2015/03/06 职场文书
复兴之路展览观后感
2015/06/02 职场文书
学困生转化工作总结
2015/08/13 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
python 管理系统实现mysql交互的示例代码
2021/12/06 Python