-
如何监听一个数组的变化
前言上一篇文章我们实现了一个属于自己的简易 MVVM 库,里面实现了一个 mvvm 库应有基本功能,里面对数据进行了数据劫持,但是仅仅只是对对象进行了数据劫持,并没有实现数组的一个监听。今天我将带着大家实现数组的 observe一、整体思路 定义变量 arrayProto 接收 Array 的 prototype 定义变量 arrayMethods,通过 Object.create() 方法继承 arrayProto 重新封装数组中 push,pop 等常用方法。(这里我们只封装我们...…
-
造一个 MVVM 库
前言我们知道的,常见的数据绑定的实现方法 数据劫持(vue):通过 Object.defineProperty() 去劫持数据每个属性对应的 getter 和 setter 脏值检测(angularjs):通过特定事件比如 input、change、xhr 请求等进行脏值检测。 发布-订阅模式(backbone):通过发布消息,订阅消息进行数据和视图的绑定监听。具体代码实现可以参考我 github 个人仓库 overwrite一言不合先上代码和效果图吧code<!DOCTYPE...…
-
Vue 组件开发
一、父子组件之间的通信总所周知,如果进行组件开发的话,必定存在组件通信的问题,具体通信如何进行的呢,我借用一张 vue 官网的图图中很明显可以看到,Parent 组件通过 props 向下传递数据(props down),Child 组件通过 events 向上传递消息(events up)。具体通信机制,请转链接 https://vuejs.org/v2/guide/components.html。那么如果不是父子组件关系,而是 slot 节点之间的关系,又该如何进行通信呢。下面的内容会...…
-
跨域那些事
一、什么是跨域由于浏览器对安全访问因素的考虑,是不允许 js 跨域调用其他页面的,这里的域我们把它想象成域名,如,一个域名为 https://www.oschina.net ,另外一个域名为 https://www.zhihu.com ,这两者属于不同的域名,它们之间的页面也是不能相互调用的,它属于同源策略所定义限制中的一种。同源策略具体分为以下几类:不同域名 相同域名不同端口号,如 https://www.oschina.net:8000 和 https://www.oschina.n...…