call apply
call(thisObj,arg1,arge2...]])
call(thisObj,[arg1,arg2])
- call:第二个参数,传入所有的参数
- apply:第二个参数,可以为数组
- call---apply可以理解为某个对象的方法,只是方法中的this的指向变成了thisObj,即方法中的this = thisObj,参数传给调用这两个方法的对象
理解call,apply第一个参数
function cat(){
}
cat.prototype={
food:'fish',
say:function(){
console.log(`I like ${this.food}`)
}
}
var bigCat = new cat;
bigCat.say()//I like fish
// 不用重新定义say方法
var dog = {food:'bone'}
bigCat.say.call(dog)//I like bone
//say方法中的this=dog,即`I like ${dog.food}`
理解call,apply第二个参数
function cat(){
}
cat.prototype={
food:'fish',
say:function(color,age){
console.log(`I like ${this.food}`)
console.log(color)
console.log(age)
}
}
// 不用重新定义say方法
var bigCat = new cat;
var dog = {food:'bone'}
bigCat.say.call(dog,'white',99)
//I like bone
//white
//99
bigCat.say.apply(dog,['black',11])
//I like bone
//black
//11
正确理解get post区别
GET和POST是由HTTP协议来定的
get与post从HTTP协议来理解:二者只有一个区别
- get:获取数据
- post:修改数据(将数据发送给服务器)
解密网上常见理解:
- GET使用URL传参或者cookie,POST使用body
GET和POST与数据传递没有任何关系!!!!
HTTP协议中:Method(get,post),Data为(url,body,header)应用程,
所以使用哪一个method与数据传输没有任何关系;
为什么,get用URL传参,post用body?
这是HTML与HTTP的约定,也就是说,
HTTP并未要求get方法把参数放在URL中,post---body中;
而且现代浏览器支持GET包含body请求;淡然这种请求不能从浏览器出发!!
- GET的URL会有长度限制,POST数据则可以非常大
这样理解那里不对?
解释:
1、URL过长会对服务器造成大负担(URL很长,却只有很小数据,如果有人恶意构造,服务器的最大并发显数会下降)
2、服务器为了安全、稳定所以考虑给URL长度加限制;
3、!!!但是这是针对HTTP请求的,与GET、POST请求没有任何关系