美文网首页
06_函数中的this

06_函数中的this

作者: 源大帝 | 来源:发表于2017-08-21 17:33 被阅读0次
    • 在js中解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称为函数执行的 上下文对象。

    • 根据函数的调用方式的不同,this会指向不同的对象。

      • 以函数的形式调用时,this永远都是window(也就是我们说的顶层对象)
      • 以方法的形式调用时,this就是调用方法的那个对象
    • this的情况

    1.当以函数的形式调用时,this是window(也就是我们说的顶层对象)
    2.当以方法的形式调用时,谁调用方法this就是谁
    3.当以构造函数的形式调用时,this就是新创建的那个对象


     function Person(color) {
        console.log(this)
        this.color = color;
        this.getColor = function () {
          console.log(this)
          return this.color;
        };
        this.setColor = function (color) {
          console.log(this)
          this.color = color;
        };
      }
    
      Person("red"); //this是谁? window
    
      var p = new Person("yello"); //this是谁? p
    
      p.getColor(); //this是谁? p
    
      var obj = {};
      p.setColor.call(obj, "black"); //this是谁? obj
    
      var test = p.setColor;
      test(); //this是谁? window
    
      function fun1() {
        function fun2() {
          console.log(this);
        }
    
        fun2(); //this是谁? window
      }
      fun1();
    

    1. this是什么?

    • 任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window(顶层对象)
    • 所有函数内部都有一个变量this
    • 它的值是调用函数的当前对象

    2. 如何确定this的值?

    • test(): window
    • p.test(): p
    • new test(): 新创建的对象
    • p.call(obj): obj

    相关文章

      网友评论

          本文标题:06_函数中的this

          本文链接:https://www.haomeiwen.com/subject/fufhdxtx.html