Ajax 的原理是什么?有什么优缺点?
AJAX即“Asynchronous Javascript And XML”,是一种创建交互式网页的应用的网页开发技术,
他的核心就是依赖浏览器的XMLHttpRequest技术,使浏览器可以想web服务器发出http请求以及接受http响应,当发出http请求之后就继续做其他的事情,等到http返回了拿到数据再去渲染页面(异步)
1·创建Ajax的核心技术XMLHttpRequest
var xhr = null;
if(window.XMLHttpRequest){
xhr = new window.XMLHttpRequest
}else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
2·向服务器发送请求
xhr.open(method,url,async) //async true为异步 false为同步
xhr.send()
3·异步处理
xhr.onreadystatechange = function(){
if(xhr.readyStatus == 4 && xhr.status == 200){
//todo... 回调处理
}
}
readyState属性是用来标识当前xhr对象处于什么状态
readyState总共有5个状态值,分别为0~4,每个值代表了不同的含义
0 未初始化 尚未调用open方法
1 启动 调用了open方法 但是还没有调用send方法
2 调用了send方法 但是还没有接受到响应
3 接受 已接受部分数据
4 完成 已经收全部数据
xhr.status 就是http的状态码
Promise 的原理是什么?请你手写一个 Promise 出来
Http 2.0 做了哪些升级?
TCP 与 UDP 的区别?
MVC 与 MVVM 的区别?
实现对象深度拷贝的方式?
html5的新特性
js的new操作符做了那些事情,怎么实现一个自定义new的过程
function Foo(name){
this.name = name;
}
Animal.prototype.say = function(){
console.log("I'm " + this.name);
};
var cat = new Animal("cat");
ps:如果Foo函数返回的是一个对象那么cat就是这个返回的对象
1.创建了一个对象
2.把返回的对象的__proto__指向了函数的prototype属性
3.函数执行了一边,并且把函数内部的this指向了返回的对象上面
new操作符的内部构造 ()
new Foo(name) = {
var obj = {}
obj.__proto__ = Foo.prototype;
var result = Foo.call(obj,name)
return typeof result === 'object' ? result : obj;
}