ECMAScript 5:

setter和getter的使用方式:

1.set/get:

 var person = {
_name: '',
get name() { return this._name },
set name(n) { this._name = n }
} // 测试
person.name // ''
person.name = 'john' // 'john', 此时 person._name 也变成了 'john'

2.Object.defineProperty

 var person = {}
var name = ''
Object.defineProperty(person, 'name', {
configurable: true,
enumerable: true,
get: function() {
return name
},
set: function(n) {
name = n
}
}) // 测试
person.name //''
person.name = 'john' // 'john',此时全局的 name 也变成了 'john'

对于setter和getter的使用场景:

1.私有变量

 // 私有变量
var person = function() {
var _name = ''
var _age = 0
return {
get name() { return _name },
set name(n) { _name = n },
get age() { return _age },
set age(a) { _age = a }
}
}()

OR

 // 私有变量
var person = function() {
var _name = ''
var _age = 0
var obj = {}
Object.defineProperty(obj, 'name', {
configurable: true,
enumerable: true,
get: function() {
return _name
},
set: function(n) {
_name = n
}
})
Object.defineProperty(obj, 'age', {
configurable: true,
enumerable: true,
get: function() {
return _age
},
set: function(a) {
_age = a
}
})
return obj
}()

2.数据绑定 (MVxx等框架的原理)

模板中每个指令/数据绑定都有一个对应的 watcher 对象,在计算过程中它把属性记录为依赖。之后当依赖的 setter 被调用时,会触发 watcher 重新计算 ,也就会导致它的关联指令更新 DOM

贴一张vue的追踪数据的图:

 

最新文章

  1. NGUI学习笔记(一)UILabel介绍
  2. alias指令:设置命令别名
  3. C++自学计划
  4. 【BZOJ-1176&2683】Mokia&简单题 CDQ分治
  5. Python快速上手JSON指南
  6. 代码风格与树形DP
  7. JS瀑布流布局模式(2)
  8. PHP之session相关实例教程与经典代码
  9. Commons Codec - 常见的编码解码
  10. 多版本uboot命令行分析
  11. 使用 trait 时报PHP Parse error: syntax error, unexpected 'use' (T_USE) 这个错误
  12. 基于实际项目的SQL学习总结
  13. 笔记-JDBC和commons-dbutils
  14. Ubuntu16.04下安装elasticsearch+kibana实现php客户端的中文分词
  15. SQL Server 数据导入Mysql具体教程
  16. MySQL 复习笔记
  17. hdu1866 A + B forever!(面积并)题解
  18. C常用问题
  19. mysql转型
  20. Exp3 免杀原理与实践 20164321 王君陶

热门文章

  1. Java内存与垃圾回收调优
  2. JavaScript把客户端时间转换为北京时间
  3. win7电脑怎么修改计算机用户名Administrator
  4. C#虚函数和接口的区别
  5. Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数、ColModel API、事件及方法
  6. JSP与EL隐式对象
  7. html 图像映射(一个图像多个连接)
  8. rqnoj378 约会计划
  9. ASP.NET学习链接
  10. KEGG数据库的使用方法与介绍