zoukankan      html  css  js  c++  java
  • this的理解

    this的理解#

    看了阮一峰的this讲解,下面是我的理解:

    总结来说 this指向 调用this所在方法 的对象;

    普通函数

    例子1

    
    function test(){
    this.x = 1;
    console.log(x);
    }
    test();//1

    因为调用test()方法是window即全局,所以这时的this指向全局

    为了证明的确是改变了全局变量看下面的例子,在外面给x赋值了2,但是在test里面还是会被改变
    例子2

    
    var x = 2;
    function test(){
    this.x = 1;
    console.log(x);
    }
    test();//1

    构造函数

    
    function test(){
    this.x = 1;
    }
    x = 2;
    var a = new test();
    console.log(a.x);//1
    console.log(x);//2

    可以看出第一个的x只是指向a这个对象,而第二个x是指向Window作为全局变量

    作为对象的方法属性

    
    function test(){
    console.log(this.x);
    }
    var a = {};
    a.func =test;
    a.x = 2;
    a.func();//2

    这里可以看出来test方法是被a对象调用,所以this指向a,所以this.x 其实是 a.x ,所以是2

    apply()方法

    
    var x = 1;
    function test(){
    console.log(this.x);
    }
    var a = {};
    a.x = 2;
    a.func = test;
    a.func.apply();//1

    a.func.apply()代表是window继承a的func属性即test方法,所以执行了test ,这时这里的this指向是window,因为是window调用的,所以是1

  • 相关阅读:
    storm学习途径
    Spark中的RDD操作简介
    【转】Hadoop web页面的授权设定
    源码安装ipython,并在ipython中整合spark
    Spark调优
    在Java中调用C
    查看Mysql表空间大小 优化空间
    update A inner join
    kibana 汉化
    xcode-select --install不能下载该软件的解决办法
  • 原文地址:https://www.cnblogs.com/liaoanran/p/8127358.html
Copyright © 2011-2022 走看看