美文网首页
难点知识

难点知识

作者: 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