- 引用类型对象 javascript和其他语言不同,其不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,那我们操作啥呢? 实际上,是操作对象的引用,所以引用类型的值是按引用访问的。 准确地说,引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,也可以说是该对象在堆内存的地址。 在函数传参的时候实际上是做了两个步骤,先从栈中获取实参对象的值,然后做一个赋值操作,将值赋给形参。在获取基本类型的时候,是从栈中取得基本类型的值,而获取对象类型的时候,从栈中得到的是这个对象类型所指向的地址,然后由这个地址去堆中寻找到对象内属性的值。
from blog.csdn.net/weixin_4446…
- MVC vs MVVM MVC是什么(from wikipedia)Modal-View-Controller
Modal: 整个设计模式的中心。他是应用的动态数据结构,独立于用户界面。他直接操作应用的数据、逻辑和规则;
View:诸如图表、表格、图像之类任何的信息图形化展示。对于同一数据的多种视图是可能的;
Controller: 接受输入并把它转化为对Model或者View的命令;
三者之间的交互: Model负责管理应用的数据,他从controller那里接收用户输入; View以一种特定的格式来渲染model并展示; Controller起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据 Model 上的改变。
MVVM
Model-View-ViewModel 在前端页面中,把Model用纯JavaScript对象表示,View负责显示,两者做到了最大限度的分离。
把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。ViewModel起到一个中介的作用相当于,对于前端来说不需要直接操作DOM(jQuery)而只需要修改数据便可以实现Dom的响应式变化。
- js生成m*n的二维数组
let m = 5, n = 4
const 2dArray = new Array(m).fill(0).map(item => new Array(n).fill(0))
!!不可以使用的写法
let m = 5, n = 4
const 2dArray = new Array(m).fill(new Array(n).fill(0))
会造成的问题是,每一行的数组都是同一个引用,所以对一个数组的修改会反映到其他数组上