为了账号安全,请及时绑定邮箱和手机立即绑定

js 中的存取器属性get set可以用来干嘛呢?实际项目中可以用作什么功能上呢

js 中的存取器属性get set可以用来干嘛呢?实际项目中可以用作什么功能上呢

拉丁的传说 2019-03-21 15:11:27
查看完整描述

6 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

get/set访问器不是对象的属性,而是属性的特性。大家一定要分清楚。特性只有内部才用,因此在javaScript中不能直接访问他们。
访问器属性属性——不包含数据值,包含一个getter和setter函数(这两个函数不是必须的)
访问器属性也有描述其行为的四个特性: [[Configurable]]:是否可配置,[[Enumerable]]:是否可枚举,[[Get]]:在读取属性时调用的函数,默认是undefined,[[Set]]:在写入属性时调用的函数,默认是undefined

 
只声明了get pro(){}属性 可读不可写;
只声明 set pro(){}属性可写不可读。
如果都不声明,属性可读可写;
如果都声明就按照,get set 定义的方法,读写;
如果都声明了,但是定义的读写方法不能正确读写,get/set失效。变成默认的可读可写
在prototype里面定义的value属性,定义了get 特性。依然可以控制value属性的读写 。也就是说obj.value访问属性时,会调用get方法,先在对象本身寻找,如果没有,再到prototype寻找,如果都没有才算没有定义,默认的既可读又可写。


查看完整回答
反对 回复 2019-04-08
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

Acceesor机制,一些MVVM框架就是通过getter和setter来使用响应式的


var binding = {

    newAge: 12,

};

var obj = {

    get newAge() {

        return binding.newAge;

    },

    set newAge(value) {

        binding.newAge = value;

        // 这里可以执行一些操作,比如叫绑定的指令触发update

    }

}


查看完整回答
反对 回复 2019-04-08
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

个人感觉类似c++等其他语言的运算符重载,不过是有限度的,即对于存取行为只能控制而不能移除


查看完整回答
反对 回复 2019-04-08
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这个可以用来规范接口,甚至临时性根据其他属性生成一个类似属性的值,或者反之把一个设置值转换成一个内置的属性。
而且可以实现只写、只读等普通属性值无法实现的特性(普通的直接属性值都是可读写的)

查看完整回答
反对 回复 2019-04-08
?
隔江千里

TA贡献1906条经验 获得超10个赞

mvvm框架的实现原理之一:数据劫持就是用get set来做的。


查看完整回答
反对 回复 2019-04-08
  • 6 回答
  • 0 关注
  • 991 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信