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 相关文章推荐
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
Apr 07 Javascript
详解js闭包
Sep 02 Javascript
node.js中的buffer.slice方法使用说明
Dec 10 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
Dec 02 Javascript
canvas实现简易的圆环进度条效果
Feb 28 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
js中url对象化管理分析
Dec 29 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
Jul 24 Javascript
Nginx设置为Node.js的前端服务器方法总结
Mar 27 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 Javascript
jquery实现穿梭框功能
Jan 19 jQuery
解析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
检查url链接是否已经有参数的php代码 添加 ? 或 &
2010/02/09 PHP
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
详解php中的implements 使用
2017/06/13 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
Python networkx包的实现
2020/02/14 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
绩效专员岗位职责
2013/12/02 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技
Java的Object类的九种方法
2022/04/13 Java/Android
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python