高阶函数是至少满足下列条件之一的函数
* 函数可以作为参数被传递
* 函数可以作为返回值输出
(js这么好的语言中的函数当然满足 ^^)_
函数作为参数传递
把函数当作参数传递,可以抽离出一部分容易变化的业务逻辑,把这部分业务逻辑放在函数中,可以分离业务代码中变与不变的部分。
回调函数,ajax异步,callback
var getUserInfo() = function(userId, callback) {
$.ajax('http://xxx.com/getUserInfo?' + userId, function(data) {
if (typeof(callback === '
继续阅读 »
使用ajax跨域請求時,在chrome、firefox等兼容性較好的瀏覽器中,可以看到返回結果、
但在IE中,ajax會自動跳到error方法中,打開f12調試,返回錯誤為(No Transport),苦惱了我很久
[][1]
继续阅读 »
发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在JavaScript开发中,我们一般用事件模型来替代传统的发布—订阅模式。
发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案。比如,我们可以订阅ajax 请求的error、succ 等事件。 或者如果想在动画的每一帧完成之后做一些事情,那我们可以订阅一个事件,然后在动画的每一帧完成之后发布这个事件。在异步编程中使用发布—订阅模式,我们就无需过多关注对象在异步运行期间的内部状态,而只需要订阅感兴趣的事件发生点。
发布—订阅模式可以取代对象之间硬编码的通知机制,一个对象不用再显式地调用
继续阅读 »
单一职责原则
就一个类而言,应该仅有一个引起它变化的原因。在JavaScript中,需要用到类的场景并不太多,单一职责原则(SRP)更多的是被运用在对象或者方法级别上。
总之,SRP原则体现为:一个对象(方法)只做一件事情。
例如:
代理模式
迭代器模式
单例模式
装饰者模式
但是,并不是所有的职责都应该一一分离的,一方面如果随着需求的变化,有两个职责是同时变化的,那就不必分离他们。比如在ajax请求的时候,创建xhr对象和发送xhr请求几乎总是在一起的,那么创建xhr对象的职责和发送xhr对象的职责就没有必要分开。
另一方面,职责的变化轴线仅当它们确定会发生变化时才有意义,即使两个职责已经被耦合在一起但他们
继续阅读 »
一些重构的建议:
提炼函数
* 避免出现超大函数
* 独立出来的函数有助于代码复用
* 独立出来的函数更容易被覆写
* 独立出来的函数如果拥有一个良好的命名,
* 它本身就起到了注释的作用。
比如在一个负责取得用户信息的函数里面,我们还需要打印跟用户信息有关的log,那么打印log的语句就可以被封装在一个独立的函数里:
var getUserInfo = function() {
ajax('http://xxx.com/userInfo', function(data) {
console.log('userId: ' + data.userId);
console.log('u
继续阅读 »
学习了pjax技术,并尝试自己写了一款wordpress主题作为实践。
more
pjax是什么
pjax是对ajax + pushState的封装,让你可以很方便的使用pushState技术。
pushState是一个可以操作history的api,该api的介绍和使用请见这里: http://www.welefen.com/use-ajax-and-pushstate.html
pjax项目
pjax的github项目
welefen的pjax
相对于前者,后者支持了缓存和本地存储,下次访问的时候直接读取本地数据,无需在次访问。
并且展现方式支持动画技术,可以使用系统自带的动画方式,也可以自定义动画展现方式。
pj
继续阅读 »
相信很多人都听说过 ajax 这个词,那你听过还有 pjax 吗?使用这个技术可以让我们的站点访问速度看起来飞快,我的博客也在使用,下面我将给你介绍它是什么?如何实现的、以及如何在你的站点里使用。
more
什么是 pjax?
继续阅读 »
content
{:toc}
百度前端学院的第二次任务笔记,JavaScript 基础。主要有JavaScript的定义,数据类型,对象,数组,字符串,正则表达式,DOM,事件,BOM,Ajax 等知识。
任务
掌握JavaScript基础知识,能够使用JavaScript编写一些复杂度不大的交互功能。
继续阅读 »
最近一直和某系统打交道,其中前端数据的处理,大多是 ajax 加 javascript 模板实现。这种方式于绑定数据给予了极大的灵活性。
曾经
曾经在前端页面处理 javascript 的数据绑定直接拼字符串,是这样实现的:
继续阅读 »
此类文章在社区中一抓一大把,但为什么还要来翻译这篇文章呢?最主要的原因是本章的配图太好了,一看就懂,扯远了。。
原文:Improve cross-domain communication with client-side solutions
介绍
越来越多的网站需要相互协作。例如,一个在线房屋租赁网站需要谷歌地图的支持,以显示某个出租屋的位置。为了满足这种需求,出现了各种各样的聚合应用(mashup)。聚合应用是一种将来自不同供应商的数据或组件整合在一起,使其更有价值或更加可定制化的 Web 应用。聚合应用或协作能力,被认为是 Web 2.0 的一个重要组成部分
但是,要将异步 AJAX 和聚合应用结合在一起并不是那么容易,
继续阅读 »