JavaScript的setter与getter方法


Posted in Javascript onNovember 29, 2017

以前在写项目过程一直都没有使用过Javascript的setter与getter方法,所以对其是一种要懂不懂的概念;今天看书看到这个知识点,还是模模糊糊的,于是就打算研究研究;

Javascript对象的属性是由名字,值和一组特性构成的。那么首先,来了解一下对象的两种属性:

数据属性,我们经常使用,应该很熟悉
访问器属性,也称存取器属性

何为存取器属性?就是一组获取和设置值的函数。在ECMAScript5中,属性值可以用一个或两个方法设置,这两个方法就是getter和setter;因此getter和setter定义的属性被称为存取器属性。

var o = {
  get val(){
    /*函数体*/
    return ;
  },
  set val(n){
    /*函数体*/
  }
}

上面的就是一个存取器属性定义的最简单的方法,可以看出getter和setter方法其实就是取代function的一个函数。

var o = {
  a:3,
  get val(){
    return Math.pow(this.a,2);
  }
}

console.log(o.val);//9
o.val = 100;
console.log(o.val);//9

getter方法是无参数,并且有返回值的;当单独设置getter方法时,只能获取属性值,无法更改其定义的属性值的,保证了数据的安全性;

var o = {
  a:3,
  set val(n){
    this.a = n;
  }
}

console.log(o.val);//undefined

setter方法是有参数,没有返回值的;当单独设置setter方式时,是无法读取属性值的;

var o ={
  a:3,
  get val(){
    return Math.pow(this.a,n);
  },
  set val(n){
    this.a = Math.max(this.a,n);
  }
}

console.log(o.a);//3
console.log(o.val);//9
o.val = 10;
console.log(o.a);//10
console.log(o.val);//100

通过上面的代码可以看出,其中this是指其对象(即代码中的“o”);

var o ={
   a:3,
  get val(){
    return Math.pow(this.a,n);
  },
  set val(n){
    this.a = Math.max(this.a,n);
  }
}

o.val = 10;
var foo = Object.create(o);
console.log(foo.val);//10
foo.val = 9;
console.log(foo.val);//10

另外,存取器属性也是可以被继承的;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript delete 使用示例代码
Mar 29 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
jQuery中校验时间格式的正则表达式小结
Sep 22 Javascript
JavaScript替换当前页面的方法
Apr 03 Javascript
javascript中call apply 与 bind方法详解
Mar 10 Javascript
js模拟支付宝密码输入框
Apr 11 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
结合Vue控制字符和字节的显示个数的示例
May 17 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
vscode配置vue下的es6规范自动格式化详解
Mar 20 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
Aug 27 Javascript
微信小程序实现登录注册功能
Dec 29 Javascript
解析Vue 2.5的Diff算法
Nov 28 #Javascript
javascript+css3开发打气球小游戏完整代码
Nov 28 #Javascript
9种改善AngularJS性能的方法
Nov 28 #Javascript
JS异步函数队列功能实例分析
Nov 28 #Javascript
浅谈vue,angular,react数据双向绑定原理分析
Nov 28 #Javascript
JS+HTML+CSS实现轮播效果
Nov 28 #Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 #Javascript
You might like
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
设定php简写功能的方法
2019/11/28 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
require.js中的define函数详解
2017/07/10 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Python实现微信表情包炸群功能
2021/01/28 Python
班组长安全生产职责
2013/12/16 职场文书
家长会学生家长演讲稿
2013/12/29 职场文书
学生自我鉴定模板
2013/12/30 职场文书
社团招新策划书
2014/02/04 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
食品安全主题班会
2015/08/13 职场文书
安全教育主题班会总结
2015/08/14 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
python如何将mat文件转为png
2022/07/15 Python