zoukankan      html  css  js  c++  java
  • this

    this有四种情况!
    1)当在函数调用的时候指向widow
    2)当方法调用的时候指向调用对象
    3)当用apply和call上下文调用的时候指向传入的第一个参数
    4)构造函数调用指向实例对象
     
     
    函数里的this可以分为两种来记忆:
    如果是使用new方式创建对象,this指向新建的那个对象;
    如果只是普通的调用,谁调用这个函数,函数里的this就指向谁~
     
    this一般有几种调用场景
    var obj = {a: 1, b: function(){console.log(this);}}
    1、作为对象调用时,指向该对象 obj.b(); // 指向obj
    2、作为函数调用, var b = obj.b; b(); // 指向全局window
    3、作为构造函数调用 var b = new Fun(); // this指向当前实例对象
    4、作为call与apply调用 obj.b.apply(object, []); // this指向当前的object
     
    阮一峰的文章: http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
     
    var obj1 = {
      a: [1,2,3],
      walk: function() {
        var me = this;
        return function() {
          console.log(this.a) // undefined
          console.log(me.a) // [1,2,3]
        }
      }
    }
     
    var obj2 = {
      a: [1,2,3],
      walk: function() {
        return () => console.log(this.a) // [1,2,3]
      }
    }
     
     
    箭头函数中的this
     

    (1)一般函数this指向在执行是绑定  当运行obj.say()时候,this指向的是obj这个对象。

    var x=11;
    var obj={
     x:22,
     say:function(){
     console.log(this.x)
     }
    }
    obj.say();
    //console.log输出的是22

    (2)所谓的定义时候绑定,就是this是继承自父执行上下文!!中的this,比如这里的箭头函数中的this.x,箭头函数本身与say平级以key:value的形式,也就是箭头函数本身所在的对象为obj,而obj的父执行上下文就是window,因此这里的this.x实际上表示的是window.x,因此输出的是11。

    var x=11;
    var obj={
     x:22,
     say:()=>{
     console.log(this.x);
     }
    }
    obj.say();
    //输出的值为11
  • 相关阅读:
    第二章 Java浮点数精确计算
    第一章 Java代码执行流程
    第九章 JVM调优推荐
    第八章 JVM性能监控与故障处理工具(2)
    基于Redis构建10万+终端级的高性能部标JT808协议的Gps网关服务器(转)
    基于Java Netty框架构建高性能的Jt808协议的GPS服务器(转)
    Netty(七):流数据的传输处理
    Java中的位运算符
    二进制(原码、反码、补码)
    Java数据结构和算法(二):数组
  • 原文地址:https://www.cnblogs.com/linziwei/p/7661646.html
Copyright © 2011-2022 走看看