猿问

对象函数this的指向

var a = {  b: {    m: function() {      console.log(this.p);
    },    p: 'Hello'
  }
};var hello = a.b.m;
hello() // undefined

hello() 为什么是undefined? 这时的this指向哪里了?


茅侃侃
浏览 346回答 1
1回答

慕无忌1623718

默认情况下,this指向事件调用者,在什么环境中调用就指向那个环境,当然this是可以改变的var a = {  b: {    m: function() {      console.log(this.p);     },    p: 'Hello'   } };var hello = a.b.m;var hello1 = a.b.m.bind(a);var hello2 = a.b.m.bind(a.b); hello() // undefined  此时this指向全局window,window中无p,所以undefinedhello1() // undefined  此时this指向a对象,a对象中无p,所以说也是undefinedhello2() //Hello  此时指向的是a中的b对象,b对象有p,这样便能打印了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答