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针对DOM的应用分析(二)
Apr 15 Javascript
js判断选择的时间是否大于今天的代码
Aug 20 Javascript
Jquery中给animation加更多的运作效果实例
Sep 05 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 Javascript
完美实现js选项卡切换效果(一)
Mar 08 Javascript
VUE多层路由嵌套实现代码
May 15 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
Angular4自制一个市县二级联动组件示例
Nov 21 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
May 10 Javascript
微信小程序实现菜单左右联动
May 19 Javascript
js通过canvas生成图片缩略图
Oct 02 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使用正则过滤js脚本代码实例
2014/05/10 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
Python3基础之基本运算符概述
2014/08/13 Python
Python3搜索及替换文件中文本的方法
2015/05/22 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
Python 项目转化为so文件实例
2019/12/23 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
酒店服务与管理毕业生求职信
2013/11/02 职场文书
企业业务员岗位职责
2014/03/14 职场文书
校长四风对照检查材料
2014/09/27 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
六一儿童节开幕词
2015/01/29 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS