什么是js中的getter 和 setter?

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 什么是js中的getter 和 setter?,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

Getter/Setter是一个万恶的概念,其实就是一个规定好参数和context的函数标准。

let obj = {
  a:1,
  b:0
}

取a的值 obj.a 就是getter
设置a的值obj.a=10 就是setter

如果我想统计 a被访问了多少次,把次数统计到b中

let obj = {_a:0,b:0}
Object.defineProperty(obj,'a',{
  get () {
    this.b ++ 
    return this._a
  },
  set (a) {
    this._a = a
  }
})
log(obj.a) // 0
log(obj) //{"_a": 0, "b": 1}
obj.a = 100
log(obj) // {"_a": 100, "b": 1}

当调用obj.a实际上执行的是get函数,当调用obj.a=100 实际上执行的是 set函数。这个就是getter和setter

Vue-什么叫把属性转化成getter/setter

vue的数据改变需要更新到视图中的,那么Vue是如何知道数据啥时候改变呢?
就是通过在属性上加上它自己的setter,正如上面属性a的setter,可以在里面加上通知『我改变』 的逻辑。把属性转化成getter/setter 这里有两个名词,一个是属性,一个是getter/setter,属性可以理解为默认的getter/setter,也就是没有自定义的逻辑在里面,就是单纯的访问和设置,getter/setter是会加上Vue自己的逻辑的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137401.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!