这段代码不应该输出1吗,为什么输出undefined?

var user = {
 count : 1,
 getCount: function(){
  return this.count;
 }
}
var func = user.getCount
console.log(func())
阅读 4.1k
6 个回答

this 指向变了

user.getCount() 这里的 this 指向的 user 这个对象

但是,当你将他赋值给一个变量 执行 func() 的时候,在浏览器环境相当于 window.func()

看清楚调用时。

user.getCount传递是引用传递。

实际上

func = function(){
  return this.count;
}

此时再调用,则this指向全局window

this指向是window,不是user,可不就是undefined咯

func 内部的 this 指向全局环境,this.count = undefined 于是输出 undefined.
建议可以去看一下 this 指向

this指针的问题,func()里面的this不是user对象,而是user.getCount函数本身,而user.getCount对象没有count属性,所以是undefined

var user = {
 count : 1,
 getCount: function(){
  return user.count;
 }
}
var func = user.getCount
console.log(func())

this指的是window

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题