a. 创建对象;
b. 打开请求;
c. 发送请求;
d. 接收相应;
通过XmlHttpRequest对象来向服务器发出异步请求,从服务器获得数据,然后用Javascript来操作DOM而更新页面;
优势:
页面无刷新,在页面内与服务器通信,给用户的体验非常好
使用异步方式与服务器通信,不需要打断用户操作,具有更加迅速的响应能力
可以减少服务器的负担,利用客户端闲置能力来处理任务
只有(父)函数内部的(子)函数才能读取(父)函数内部定义的变量,因此(子)函数则被成为闭包;
闭包特点:
a. 延长函数内部变量的生命周期;
b. 函数内部嵌套函数;
c. 参数和变量不会回收;
d. 私有变量不能被销毁,容易造成内存泄漏(使用变量后 手动赋值为 null);
e. 涉及跨域,导致性能缺失,(将变量存成局部变量,减轻执行速度的影响);
14. 前端跨域问题
跨域:
指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。
同源:是指,域名,协议,端口均相同,localhost和127.0.0.1虽然都指向本机,但也属于跨域。
a. jsonp;
与josn的区别:josn返回的是 一串数据;josnp返回的是 脚本代码(包含一个函数调用);
josnp只能发送get请求(类似script的src触发对指定地址的请求,所以不支持post);
b. cors;
后端修改请求头
header(‘Access-Control-Allow-Origin:*’);允许访问的网址
header(‘Access-Control-Allow-Method:POST,GET’);允许访问的方式
c. window.name;
d. postMessage;
15. this指向问题
a. 函数中 谁调用 this就指谁;
b. 事件函数中,this指代绑定事件的源元素;
c. 全局范围内的this指代window;
16. js的判断
a. if(){}else{};
b. switch(){
case " ",
// 满足条件的 执行方法
break;
...
case " ",
break;
};
c. 三目运算
17. return;break;contuine
a. return;
只用在函数中,条件满足 执行到这句 直接结束函数体
1. if 后面 return
eg:
if(this.index==now) return
now = this.index
等于
if(this.index==now){
}else{
now = this.index
}
b. break;
跳出循环,条件满足 跳出 该循环
c. contuine;
跳出满足条件的循环,继续执行下次循环
18. 短路运算符 || (或); &&(与);!(非)
a. 对于布尔类型的值进行判断
|| 只要有一个是 true 结果都是 true;
&& 只有都是true 才返回true;
a. display:flex;
b. 使用calc() 计算;
c. 定位;
未知当前元素的宽高:
position:absolute;top:50%;left:50%;
transform:translate(-50%,-50%);
已知当前元素宽高:
position:absolute;top:50%;left:50%;
margin-top:高度的一半的负值;
margin-left:宽度的一半的负值;
第三种:
position:absolute;top:0;left:0;right:0;bottom:0;
margin:auto;
33. 箭头函数 和 普通函数
箭头函数:
var fun = () => alert("Hi!"); //没有参数的话括号不能省略
var fun = (a,b) => a; //有多个参数的情况下括号也不能省略
var fun = a => a; //只有一个参数的话括号可以省略
var fun = a => {
a = a + 1; //有多条语句的情况下,大括号{}不能省略,并且返回值前面需要写return
return a;
}
var fun = a => alert(a); //只有一条语句的情况下,大括号可以省略
var fun = a => a; //只有一条语句,且这条语句是返回值的语句,这种情况下return可以省略
// 等同于
var fun = function (a) {
return a;
};