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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
关于 文本框默认值 的操作js代码
Jan 12 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
Dec 17 Javascript
JS下拉缓冲菜单示例代码
Aug 30 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
js为什么不能正确处理小数运算?
Dec 29 Javascript
JS实现title标题栏文字不间断滚动显示效果
Sep 07 Javascript
JS ES6多行字符串与连接字符串的表示方法
Apr 26 Javascript
JS一个简单的注册页面实例
Sep 05 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
Feb 10 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 Javascript
JS数组的高级使用方法示例小结
Mar 14 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
linux中cd命令使用详解
2015/01/08 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
推荐dojo学习笔记
2007/03/24 Javascript
IE php关于强制下载文件的代码
2008/08/23 Javascript
js 函数调用模式小结
2011/12/26 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
vue 动态表单开发方法案例详解
2019/12/02 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
Python实现在线程里运行scrapy的方法
2015/04/07 Python
使用python实现knn算法
2017/12/20 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
法国时尚童装网站:Melijoe
2016/08/10 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
医药个人求职信范文
2014/01/29 职场文书
美食节策划方案
2014/05/26 职场文书
研修心得体会
2014/09/04 职场文书
思想道德自我评价2015
2015/03/09 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
反邪教教育心得体会
2016/01/15 职场文书