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 相关文章推荐
jqgrid 简单学习笔记
May 03 Javascript
js中的屏蔽的使用示例
Jul 30 Javascript
juery框架写的弹窗效果适合新手
Nov 27 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
JS仿淘宝实现的简单滑动门效果代码
Oct 14 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
解决拦截器对ajax请求的拦截实例详解
Dec 21 Javascript
解析Vue.js中的组件
Feb 02 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
Apr 08 Javascript
基于layui内置模块(element常用元素的操作)
Sep 20 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
微信小程序获取当前时间及星期几的实例代码
Sep 20 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
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
逐步提升php框架的性能
2008/01/10 PHP
PHP 变量类型的强制转换
2009/10/23 PHP
php 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
php无限级分类实现方法分析
2016/10/19 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
nodeJS微信分享
2017/12/20 NodeJs
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
Python第三方库的安装方法总结
2016/06/06 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
人事专员的职责
2014/02/26 职场文书
元宵节寄语大全
2015/02/27 职场文书
禁毒主题班会教案
2015/08/14 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
Python中22个万用公式的小结
2021/07/21 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android