this的练习

60 阅读1分钟
function fn() {
    this.x = 100
  }
  fn() //这里调用函数的对象是window,相当于给window添加了x属性,属性值为100
  console.log(x)
  var obj = {
    name: "jack",
    age: 10,
    setAge: function (age) {
      this.age = age
    }
  }
  obj.setAge(30)//这里是obj调用的函数,所以this为obj,函数运行相当于obj.age=30,覆盖之前的值
  console.log(obj) 
  var fn = obj.setAge
  fn(40)//这里直接调用函数,所以调用者为window,window.age=40
  console.log(age, obj.age)//因为第二次调用函数的是window,所以obj.age任然为30