首页 > 其他分享 >说一下 this 的指向

说一下 this 的指向

时间:2022-09-02 09:24:23浏览次数:56  
标签:console name 指向 一下 cat var 有鱼 log

作为函数在全局调用,this的指向是window

var name = '卡卡';
    function cat() {
      var name = '有鱼';
      console.log(this.name);//卡卡
      console.log(this);//window
    }
    cat();

作为对象中的某个方法被调用,this指向该对象

一层作用域链

    var name = '卡卡';
    var cat = {
      name: '有鱼',
      eat: function () {
        console.log(this.name); // 因为函数eat是由cat对象调用的,所以this指向的是cat本身,所以cat.name=有鱼;
        console.log(this);//{name: '有鱼', eat: ƒ}
      }
    }
    cat.eat();

多层作用域链时,this指向最近的

var name = '卡卡';
    var cat = {
      name: '有鱼',
      eat1: {
        name: '年年',
        eat2: function () {
          console.log(this.name);//年年
          console.log(this);//{name: '年年', eat2: ƒ}
        }
      }
    }
    cat.eat1.eat2();

构造函数的调用,this指向实例化新对象

 var name = '卡卡';
    function Cat(name) {
      this.name = name;
      console.log(this)
    }
    var cat1 = new Cat('有鱼');//Cat {name: '有鱼'}
    console.log(cat1.name);// 有鱼

匿名函数的调用,this指向全局对象

var name = '卡卡';
var cat = {
  name:'有鱼',
  eat:(function(){
    console.log(this.name);//卡卡
  })()
}
cat.eat;

 

标签:console,name,指向,一下,cat,var,有鱼,log
From: https://www.cnblogs.com/qianduan-Wu/p/16648617.html

相关文章