什么是观察者模式

观察者模式属于行为设计模式的一种,也就是说专注于改善或简化系统中不同对象之间的通信。

目的

定义对象间的一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖于它的对象都得到通知并自动更新,以此达到解耦的目的。

别名

依赖(Dependents),发布-订阅(Publish-Subscribe),网上说的观察者模式和发布订阅模式不同其实是不对的。

有观察者对象(observer),就一定有观察者需要关注的目标对象(subject),观察者就好比订阅者,目标对象就好比发布者。

发布者:向订阅者们发送数据,一个目标可以有任意数目的依赖它的观察者,也就是一个发布者可能有许多订阅者
订阅者:数据到来时收到通知,消费数据,根据数据作出反应。总而言之,从发布者那里接受数据。

为了便于统一,下面用目标对象和观察者来做解释。

Read More

写在开头

老生常谈的问题,网上的总结也有很多,重要的不是总结,而是把所有的方法都尝试一遍。

纸上得来终觉浅,绝知此事要躬行

概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。

URL 说明 是否允许通信
http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许
http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同域名不同文件夹 允许
http://www.a.com:8000/a.jshttp://www.a.com/b.js 同一域名,不同端口 不允许
http://www.a.com/a.jshttps://www.a.com/b.js 同一域名,不同协议 不允许
http://www.a.com/a.jshttp://70.32.92.74/b.js 域名和域名对应ip 不允许
http://www.a.com/a.jshttp://script.a.com/b.js 主域相同,子域不同 不允许
http://www.a.com/a.jshttp://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问)
http://www.cnblogs.com/a.jshttp://www.a.com/b.js 不同域名 不允许

跨域

浏览器出于安全的考虑(避免恶意网站轻易读取其他网站显示的内容数据等)原则上允许跨域写而限制了跨域读。写是指数据的上行/发送( sending request ),读是指数据的下行/接受( receiving response )。

Read More

在js中很多地方都用到this,结合最近的读书,做个总结。

关于this

  • 随着函数使用场合不同,this的值会发生变化。
  • this对象是在运行时基于函数的执行环境绑定的。在网页的全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。
  • 也就是说this关键字总是指代调用者。

调用位置
函数在代码中被调用的位置(而不是声明的位置)

可以通过分析调用栈(为了达到当前执行位置所调用的所有函数)来获取调用位置,而this只与当前正在执行的函数的前一个调用有关。

Read More

写在开头

2015年不知不觉来到了尾声,回顾2015,发生了很多事,去年年底ES6标准化,React Native发布,外公的去世,bower的死亡,当然,一不小心结束了学生时代。人总是在慢慢长大,回望来时的路,永远感觉上一个路口的自己幼稚无知。熟悉的城市从三线城市到二线城市到如今,西直门,大钟寺,知春路,五道口…这些地名不再陌生。
从最开始的知春路,搬到芍药居的公寓,再到五道口的自如。总的来说生活在一点点的好起来。都说北漂很难,参考别人来时的路,想想自己的北漂之路还真的不算难。有着一份体面的工作,一份对于应届生来说不算低的工资,有着一个可以遮风避雨之所,有着一群可以一起吐槽的伙伴,首先应该感谢一切拥有。

Read More

基础理论

cookie 是什么

  • 由 web 服务器端生成,发送给客户端(通常为浏览器)的一段文本,一旦收到 cookie 浏览器会将 cookie 的 key/value 保存到本地某个目录下的文本文件里。
  • 以后每次向服务器提交请求的时候,浏览器都会把存储的 cookie 发送到服务器,根据 cookie 中的值为访问的客户端提供数据。

为什么需要 cookie

  • 因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,web 服务器无法区分是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。
  • cookie 就是让客户端积累一组服务器特有的信息,每次访问服务器时都将这些信息返回。

Read More