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

  • 相关阅读:
    bzoj3167 [Heoi2013]Sao
    51Nod1220 约数之和
    THUSC2017 游记
    基于线性代数的一般图匹配
    COGS2608 [河南省队2016]无根树
    CTSC2017 & APIO2017 游记
    cef GeneralUsage
    CefApp和CefClient的作用
    cef源码分析之cefsimple
    【chromium】cef是如何进行版本控制的?
  • 原文地址:https://www.cnblogs.com/liaoanran/p/8127358.html
Copyright © 2011-2022 走看看