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 相关文章推荐
getComputedStyle与currentStyle获取样式(style/class)
Mar 19 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
jquery使整个div区域可以点击的方法
Jun 24 Javascript
JavaScript与java语言有什么不同
Sep 22 Javascript
浅谈jquery中使用canvas的问题
Oct 10 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 Javascript
JavaScript的查询机制LHS和RHS解析
Aug 16 Javascript
JS实现判断移动端PC端功能
Feb 21 Javascript
用Angular实现一个扫雷的游戏示例
May 15 Javascript
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
Vue的生命周期一起来看看
Feb 24 Vue.js
解析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 Curl出现403错误的解决办法
2014/05/29 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
php实现微信扫码支付
2017/03/26 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
javascript截取字符串小结
2015/04/28 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
python调用shell的方法
2013/11/20 Python
对于Python中线程问题的简单讲解
2015/04/03 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
struct和class的区别
2015/11/20 面试题
招商经理岗位职责
2013/11/16 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
2014年技术员工作总结
2014/11/18 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
领导欢迎词范文
2015/01/26 职场文书
Vue+Flask实现图片传输功能
2022/04/01 Vue.js