《如何通过闭包对象管理程序中状态的变化?》学习笔记 day3

值的不可变
原始类型
不可能改变一个原始类型的值
对象类型
值是可变的
React.js中的props 和state
props
通常是作为一个外部参数,传入到函数里。
作为静态元素输出在UI中渲染。
state
是一个内部变量。
作为动态元素输出在UI中渲染。
props和state 都是用对象来存储状态的。
结构值不可变
props和state是不是必须的?
props是必须的,state不是
如果应用和用户之间有交互,就需要管理值的状态,和围绕值设计一些列行为。这个过程中,我们需要考虑的就是一个值的结构不可变的问题
闭包和对象
这两者都可以对一个状态值进行封装和创建因为。
闭包最大特点是可以突破生命周期和作用域的限制
当一个外部函数内嵌一个内部函数时,如果内嵌函数引用了外部函数的变量,这个变量就会突破生命周期的限制,在函数结束执行后,仍然存在。
突破作用域的限制是指,我们可以把一个内部函数返回成一个方法在外部调用。
单纯从值的状态管理和围绕它的一系列行为的角度来看,我们可以说闭包和对象是同形态的(isomorphic)。
差异:在隐私、状态拷贝、性能。在结构性的处理值的问题,具有不同的优劣势
属性的查改
闭包:除非通过接口,也就在外部函数中返回内部函数的方法,不然内部是不对外的
对象:不需要特殊的方式,就可以获取对象中的属性和重新赋值;Object.freeze()-将对象设置为只读>writable: false
状态的拷贝
如何解决拷贝性能问题?

你可能感兴趣的:(javascript前端)