公告:携程招聘java、前端、测试、产品等,请发简历至374947554@qq.com,帮内推!

Proxy和defineProperty实现数据观察(观察者模式)

前言

说到vue的原理,大家都知道是通过defineProperty实现对数据的的观察,也知道vue3.0改成了Proxy。关于代理模式(其实也是一种设计模式),最新es6 有实现代理的方法,即我们可以用Proxy。

关于Proxy,文档还是阮一峰老师的es6,可以结合reflect一起学习。这里就不多用语言来描述了。

defineProperty

我们知道,vue中,有$set方法来强制视图更新,当然也有数组的一些操作。其实这是defineProperty 来观察对象或者数组的一些缺陷。简单实现一个defineProperty观察数据的方法。

汇总常用的js对象Object的深比较方法

前言

之前文章有些深拷贝和浅拷贝,这篇文章简单总结常用的深度比较方法,这些方法在react中用的特别多,特别是生命周期里面prop对比。因此,react和immutable天生结合性比较好。假设你项目中没有用immutable这种第三方库,那么实现深度比较的方法,在这里总结一下!

方法一

利用空白gif图片,实现数据上报,数据埋点

前言

利用空白gif图片,实现数据上报,数据埋点。开发中经常需要统计页面点击,曝光,包括一些数据埋点。当然,埋点数据上报的方式有很多,下面介绍纯css的方式和一句话js方式。

纯css方式

纯css方式实现数据上报很简单。原理就是利用css属性,但是弊端也比较明显,就是点击只能加载一次。例如如下代码,实现跟踪botton1和botton2的点击事件

封装一个原生js的ajax请求,支持IE9CORS跨域请求

前言

关于纯js的ajax请求,我之前有文章写过,https://www.haorooms.com/post/js_ajax_chun, 关于CORS跨域资源共享,我也有文章写过,https://www.haorooms.com/post/cors_requestheaders, 但是在IE8和IE9中,cors跨域是无效的。针对这个,其实IE有个另类的CORS请求,仅仅在IE8和IE9中存在,IE10就废弃了,假如你要兼容IE8和IE9,那么这个属性就用到了。

IE8和IE9的 XDomainRequest

在IE中存在一个已经废弃了的属性XDomainRequest,这个属性在IE8和IE9中运行良好。

方法如下: