Rumah  >  Soal Jawab  >  teks badan

javascript - 这里的this.name为什么是"Window"?

var name = "Window";
var oPerson = {
    name:"Bob",
    friend:{
      name:"Jonh",
      sayHi:function(){
        alert(this.name);
        }
    }
  };

var sayHi = oPerson.friend.sayHi;
sayHi(); //"Window"
PHP中文网PHP中文网2750 hari yang lalu1156

membalas semua(11)saya akan balas

  • PHP中文网

    PHP中文网2017-04-10 15:45:11

    sayHi() = window.sayHi() = sayHi.apply(window)

    实际上javascript调用方法a.func(函数)都等价于 func.apply(a),当然前提是要a有func这个属性或者a的原型链上有func属性(即可以获取到函数引用)。

    如果省去a的话,就相当于func.apply(null)也就是func.apply(window)

    balas
    0
  • Batalbalas