什么是AJAX?
依赖浏览器提供的XMLHttpRequest对象,XMLHttpRequest对象使浏览器可以『发出HTTP请求与接收HTTP响应』。实现在『页面不刷新的情况下和服务端进行数据交互』
AJAX步骤
创建 XMLHttpRequest 实例
发出 HTTP 请求
接收服务器传回的数据
更新网页数据
XMLHttpRequest知识图谱
XMLHt...
setTimeout和setInterval
setTimeout
将函数的执行推迟到一段时间之后再执行
语法:setTimeout(func|code, delay)
注意:setTimeout的第一个参数为『函数名』,而不是函数的调用
setTimeout的第二参数『delay』,表示一段时间之后再执行,但是也有一些特殊情况
var start = Date.now()var i = 0function t...
同源策略
协议、域名、端口号参考JavaScript-Bom属性及其方法1
同协议:如都是http或者https
同域名:如都是http://baidu.com/a 和http://baidu.com/b
同端口:如都是80端口
⚠️只有 协议、域名、端口号一模一样才能发送 AJAX 请求
对于突破同源限制,成功发送AJAX请求的叫做跨域如:
JSONP ...
ES6模板字面量(template literal)
多行字符串
ES5情况下多行字符串
多行的字符串以 逗号 ' 开头,以逗号 ' 结尾,并且每一行的空格末尾接一个 反斜杠 『\』('转义符')。且需要换行
let longStr = 'a \long \long \story'console.log(longStr)// a long long story
以上的繁琐的操作最后只是一个书写上的多行...
作用域链:
JS权威指南指出”JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里.” ECMA262中所述 任何执行上下文时刻的作用域, 都是由作用域链(scope chain)来实现.在一个函数被定义的时候, 会将它定义时刻的scope chain链接到这个函数对象的[[scope]]属性.在一个函数对象被调用的时...
let const
let
1. let 声明的变量不会有变量提升,且在 『一个花括号{}』 内部声明的变量,会形成块级作用域
?
{ console.log(a) // Uncaught ReferenceError: Cannot access 'a' before initialization let a = 111 console.log(a) // 打印出 111}console.log(a)// Uncaught ReferenceError: a is not d...
摘自《JavaScript设计模式与开发实践》
迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的每个元素。
目前,恐怕只有在一些“古董级”...
摘自《JavaScript设计模式与开发实践》
代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。
代理模式的关键是,当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户实际上访问的是替身对象。替身对象对请求做出一些处理之后,再把请求转交给本...
摘自《JavaScript设计模式与开发实践》
在现实中,很多时候有多种途径到达同一个目的地。比如我们要去某个地方旅游,可以根据具体的实际情况来选择出行的线路。
如果没有时间但是不在乎钱,可以选择坐飞机。
如果没有钱,可以选择坐大巴或者火车。
如果再穷一点,可以选择骑自行车。
在程序设计中,我们也常...
摘自《JavaScript设计模式与开发实践》
命令模式是最简单和优雅的模式之一,命令模式中的命令(command)指的是一个执行某些特定事情的指令。命令模式最常见的应用场景是:有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,...