zoukankan      html  css  js  c++  java
  • this指向问题(call、apply、blind),自我理解的

    在创建函数的时候,函数自身有一些属性和方法
            
            其中有
                apply、call、bind方法,这些方法都是能够改变this指向的
                
                
                call:有无数的参数
                    第一个参数:
                        能够改变this指向,基本上是写啥是啥(null,undefined,设置了还是window)
                    
                    从第二个参数以后,就是实参(有几个形参就对应几个实参);
    function fn(a,b,c,d){
            console.log(this);
            console.log(a+b+c+d);
        }
    fn.call(document,1,2,3,4);//改变this指向,有无数个参数
     
                    
                    
                apply:只有2个参数
                    第一个参数:
                        能够改变this指向,基本上是写啥是啥(null,undefined,设置了还是window)
                        
                    第二个参数:(数组内放置的就是实参)
                        数组[]
    function fn(a,b,c,d){
            console.log(this);
            console.log(a+b+c+d);
        }
      fn.apply(document,[1,2,3,4]);//改变this指向,第二个参数是数组
     
                        
                上面2个方法,都是使用之后自动执行函数。
                        
                bind,调用了bind方法不是直接执行函数,返回值就为新的函数(一般是改变this之后的函数)
                
                    若干参数:
                        第一个参数:
                            能够改变this指向,基本上是写啥是啥(null,undefined,设置了还是window),从第二个参数以后,就是实参(有几个形参就对应几个实参)
                            
    function fn(a,b,c,d){
            console.log(this);
            console.log(a+b+c+d);
        }
    let f = fn.bind(document);
    f(1,2,3,4);//改变了this指向,并且需要重新调用函数。
    
    
    代码的世界很精彩,好的代码需要慢慢的打磨。
  • 相关阅读:
    [NOI2004] 郁闷的出纳员
    [洛谷P4556] 雨天的尾巴
    【转】进程、线程、 GIL全局解释器锁知识点整理
    Python3中的SocketServer
    socket 上传文件代码
    python socket 连续send,出现粘包问题
    【转】动态导入模块的两种方法
    【转】面向对象高级语法部分
    python的垃圾回收机制和析构函数__del__
    django 项目使用setting文件里定义的变量方法
  • 原文地址:https://www.cnblogs.com/Allisson/p/9898032.html
Copyright © 2011-2022 走看看