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的目的分析
Jan 05 Javascript
div+css布局的图片连续滚动js实现代码
May 04 Javascript
JS实现标签页效果(配合css)
Apr 03 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
Mar 04 Javascript
jquery删除数组中重复元素
Dec 05 Javascript
原生js实现回复评论功能
Jan 18 Javascript
React Router v4 入坑指南(小结)
Apr 08 Javascript
layui 优化button按钮和弹出框的方法
Aug 15 Javascript
JavaScript 处理树数据结构的方法示例
Jun 16 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
Mar 10 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 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
虫族 ZERG 概述
2020/03/14 星际争霸
php公用函数列表[正则]
2007/02/22 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
php生成HTML文件的类方法
2019/10/11 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
Python采集腾讯新闻实例
2014/07/10 Python
Python fileinput模块使用介绍
2014/11/30 Python
极简的Python入门指引
2015/04/01 Python
python通过post提交数据的方法
2015/05/06 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
python实现倒计时小工具
2019/07/29 Python
Python如何输出警告信息
2020/07/30 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
优秀德育工作者事迹材料
2014/05/07 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
Vue2.0搭建脚手架
2022/03/13 Vue.js