js知识点复习
浅拷贝与深拷贝
浅拷贝
1
2
3
4
5
6
7
8function extendCopy(p, c) {
var c = c || {};
for (var i in p) {
c[i] = p[i];
}
c.uber = p;
return c;
}1
2
3// ES2015 的语法,性能良好
var a = {};
var b = Object.assign({}, a);深拷贝
递归方法
1
2
3
4
5
6
7
8
9
10
11
12function deepCopy(p, c) {
var c = c || {};
for (var i in p) {
if (typeof p[i] == 'object') {
c[i] = p[i].constructor === Array ? [] : {};
deepCopy(p[i], c[i]);
} else {
c[i] = p[i];
}
}
return c;
}JSON 对象的提供的方法,性能不太理想
1
2var a = {};
var b = JSON.parse(JSON.stringify(a));能够处理JSON格式的所有数据类型,但是对于正则表达式类型、函数类型等无法进行深拷贝,而且会直接丢失相应的值,还有就是它会抛弃对象的constructor。也就是深拷贝之后,不管这个对象原来的构造函数是什么,在深拷贝之后都会变成Object。
什么是跨域
拥有相同的协议、端口和主机,那么就属于同一个源(origin)。反之,不符合条件的都是跨域。
GET 和 POST 的区别
GET 和 POST 长度的限制问题
GET 是通过 URL 提交数据,因此 GET 可提交的数据量就跟 URL 所能达到的最大长度有直接关系。实际上 HTTP 协议对 URL 长度是没有限制的;限制 URL 长度大多数是浏览器或者服务器的配置参数;同样的,HTTP 协议没有对 POST 进行任何限制,一般是受服务器配置限制或者内存大小。GET 和 POST 的安全性
GET 是通过 URL 方式请求,可以直接看到,明文传输。POST 是通过请求 header 请求,可以开发者工具或者抓包可以看到,同样也是明文的。GET 请求会保存在浏览器历史纪录中,还可能会保存在 Web 的日志中。对服务器状态的影响
根据 http 的设计,GET 应该对服务器状态没有修改,而 POST 应该对服务器状态做修改。幂等
幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。按照 RFC 规范,PUT,DELETE 和安全方法都是幂等的,POST 语义不是幂等的。总结
改变服务器状态 不改变服务器状态 幂等 PUT GET 不幂等 POST 无