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 insertAfter() 实现函数代码
Oct 12 Javascript
JS中的public和private对象,即static修饰符
Jan 18 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
Sep 27 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
Jul 08 Javascript
js事件绑定快捷键以ctrl+k为例
Sep 30 Javascript
基于jquery实现智能提示控件intellSeach.js
Mar 17 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
详解Vue组件实现tips的总结
Nov 01 Javascript
vue data恢复初始化数据的实现方法
Oct 31 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
配置支持SSI
2006/11/25 PHP
php str_pad 函数用法简介
2009/07/11 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
PHP实现微信退款功能
2018/10/02 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
javascript self对象使用详解
2016/10/18 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
python 创建弹出式菜单的实现代码
2017/07/11 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Python模块future用法原理详解
2020/01/20 Python
Python的collections模块真的很好用
2021/03/01 Python
视光学毕业生自荐书范文
2014/02/13 职场文书
北体毕业生求职信
2014/02/28 职场文书
人事科岗位职责范本
2014/03/02 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
教师三严三实心得体会
2014/10/11 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
Python测试框架pytest高阶用法全面详解
2022/06/01 Python