分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

JS中的getter和setter

发布时间:2023-09-06 02:31责任编辑:胡小海关键词:暂无标签

对象有两种属性:(1)数据属性,就是我们经常使用的属性(2)访问器属性,也称存取器属性

存取器属性就是一组获取和设置值的函数。在ECMAScript5中,属性值可以getter和setter方法获取和设置,因此getter和setter定义的属性被称为存取器属性。getter负责获取值,它不带任何参数。setter负责设置值,在它的函数体中,一切的return都是无效的。

var o = { ?get val(){ ???/*函数体*/ ???return ; ?}, ?set val(n){ ???/*函数体*/ ?}}

在对象内如果设置了存取器属性,如果某一变量只声明了getter方法,那么它仅仅只可读而不可写。如果只声明了setter方法,那么读到的该变量值永远都是undefined。

//只声明getter方法时不能通过getter方法来改变变量值var obj = { ?a: 3, ?b: 8, ?get val() { ???return this.a; ?}}console.log(obj.val); ????//3obj.val= 100;console.log(obj.val); //3//只声明setter方法时不能获取变量的值var obj = { ?a: 3, ?b: 8, ?set val(n) { ???this.a = n; ?}}console.log(obj.val); ????//undefinedobj.val= 100;console.log(obj.val); //undefinedconsole.log(obj.b);  //8 ??其他变量不受影响//同时声明两种方法var obj = { ?a: 3, ?b: 8, ?get val(){ ???return this.a; ?}, ?set val(n) { ???this.a = n; ?}}console.log(obj.val); ????//3obj.val= 100;console.log(obj.val); //100

setter和getter方法在定义时并未用function关键字,事实上这里的get或set,你可以理解为两种不同状态下的function:包容的一面(写),安全的一面(读)。当不通过存取器属性而是直接按平时习惯拿数据属性时,获取和设置都不受影响,或许这两个方法时为了以后的安全设计的吧。

JS中的getter和setter

原文地址:https://www.cnblogs.com/wenxuehai/p/10333987.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved