美文网首页
难点知识

难点知识

作者: Master黄 | 来源:发表于2017-05-25 18:40 被阅读0次

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请求没有任何关系

相关文章

网友评论

      本文标题:难点知识

      本文链接:https://www.haomeiwen.com/subject/ojpzxxtx.html