闭包
闭包是指A函数包含B函数,而B函数能够调用A函数(即父函数)里的变量,我们就称B函数是闭包。
代码演示:
function init(){
var name = 100;
function(){
alert(name)
} //B函数即闭包函数
}
闭包在应用中随处可见,使用闭包就是为了代码运行的整洁。
跨域
当请求一个url的协议、域名、端口三者之间任意一个与当前页面不同即为跨域。
同步ajax请求
五个步骤如下:
1.创建异步对象
var xhr = new XMLHttpRequest();
2.设置请求方式,请求url:
// get请求如果有参数就需要在url后面拼接参数,
// post如果有参数,就在请求体中传递
xhr.open("get","validate.php?username="+name)
xhr.open("post","validate.php");
3.设置请求头(GET方式忽略此步骤):setRequestHeader()
xhr.send("username="+name);
4.设置请求体 send();
xhr.send("username="+name);
5.让异步对象接收服务器的响应数据
xhr.onreadystatechange = function(){
if(xhr.status == 200 && xhr.readyState == 4){
console.log(xhr.responseText);
}
成功标志:1.服务器成功响应了 2.异步对象的响应状态为4(数据解析完毕可以使用了)
同源策略
ajax请求的页面或资源只能是同一个域下面的资源,不能是其他域的资源,这是在设计ajax时基于安全的考虑。报错如下:
XMLHttpRequest cannot load https://www.baidu.com/. No
'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'null' is therefore not allowed access.
解决异步请求跨域
采用jsonp异步跨域请求:(这里偷懒用了JQ)
$.ajax({
url:'js/data.js',
type:'get',
dataType:'jsonp',
jsonpCallback:'fnBack'
})
.done(function(data){
alert(data.name);
})
.fail(function() {
alert('服务器超时,请重试!');
});
// data.js里面的数据: fnBack({"name":"tom","age":18});
原型链
每个对象都有自己的原型_proto_,原型又会有对应自己的原型即原型的原型,如此可以形成原型链。查找特定属性时,我们先去这个对象里去找,如果没有的话就去它的原型对象里面去,如果还是没有的话再去向原型对象的原型对象里去寻找… 这个操作被委托在整个原型链上,这个就是我们说的原型链了。
_ proto _
_proto_是原型链查询中实际用到的,它总是指向 prototype,换句话说就是指向构造函数的原型对象,它是对象独有的。
prototype
prototype属性,它是函数所独有的,它是从一个函数指向一个对象。它的含义是函数的原型对象,也就是这个函数(其实所有函数都可以作为构造函数)所创建的实例的原型对象; 这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象);
资料来源:https://blog.csdn.net/Hulu_IT/article/details/89363145 Ajax清晰请求步骤与代码
原创 西瓜皮儿的皮儿