zoukankan      html  css  js  c++  java
  • javascript --学习this

      this

      在一般的强类型语言中,this指向的是这个对象本身,可在javascript中

        this的取值是执行上下文环境的一部分

      其实这个this并不是很难立即,只要记住二点就可以了

        那就是谁caller(调用者是谁this指向的就是谁),如果有赋值语句就改变类型

      我们来看几个例子就知道了

    function Fd(){
        this.name="test";
        console.log(this);
    };
    var f1=new Fd();//Fd {name: "test"}
    Fd();//window

      在这里第一次是通过new出来的所以调用者是f1,而第二次是直接执行的,而Fd只是一个表达式,就相当于全局的一个函数,所以他是被window调用的

    var obj={
        x:10,
        fn:function () {
            console.log(this);
            console.log(this.x);
        }
    };
    obj.fn();//obj,10
    var d=obj.fn;
    d();//window ""
    obj.fn.call();//相当于上面的代码

      那上面的代码是怎么回事呢?

      其实是这样的,因为obj.fn赋值给了d;然后我们调用d(),步骤为:

        >我们现在全局的上下文

        >执行d(),进入了fn的上下文,所有调用者是window

      所以在这里也验证了有赋值语句就改变类型的说法

    当然还有一种特殊的情况

      

       因为f()是一个普通的函数,所有呢,this指向window

    Hold on, everything is possible.
  • 相关阅读:
    Apache Pig的前世今生
    openssl之EVP系列之6---EVP_Encrypt系列函数编程架构及样例
    P3388 【模板】割点(割顶)
    让priority_queue支持小根堆的几种方法
    2017.11.7解题报告
    一个例子教你如何与出题人斗智斗勇
    debug
    树上倍增求LCA及例题
    素数的筛法
    Catalan卡特兰数入门
  • 原文地址:https://www.cnblogs.com/student-note/p/6207813.html
Copyright © 2011-2022 走看看