zoukankan      html  css  js  c++  java
  • call和bind改变的上下文环境

      这周自我学习的时间很宽裕。正巧一直对call和apply不甚理解(虽然bind还经常用到,仅仅是知道这么用有这个效果= =,而不知为何有这个效果),下午就自己写写demo,帮助自己理解。

        function add(a, b) {
    		console.log(a + b);
    	}
    
    	function minus(a, b) {
    		console.log(this)
    		console.log(a - b);
    	}
    
    	minus(1, 2);
    	minus.call(add, 1, 2);   
    

      非常简单的2个函数,下面先给出结果:

        

      这样看就很清晰了,第一次直接用minus(1, 2),控制台输出的this是全局的window,第二次用minus.call(add, 1, 2),控制台输出的this是add()函数。很明显,call改变了上下文的环境。所以将console.log(this)改为console.log(this(1, 2)),第二次将会输出3。

      稍作改变:

    	function add(a, b) {
    		console.log(a + b);
    	}
    
    	function minus(a, b) {
    		console.log(this)
    		console.log(a - b);
    	}
    
    	minus(1, 2);
    	var addition = minus.bind(add);
    	addition(1,2);
    

      

      同样先给结果:

        

      函数表达式additon的上下文也变成了add()函数。

        

  • 相关阅读:
    基于JFinal中搭建wopi协议支撑办法
    mysql 增加列
    国王分金币
    口算题卡升级版本
    elasticsearch牛人的日志列表
    牛B的大数据库
    golang --rune
    golang ---rune与byte
    golang学习笔记--接口
    golang学习笔记--函数和方法
  • 原文地址:https://www.cnblogs.com/youyouluo/p/6098475.html
Copyright © 2011-2022 走看看