上题目
问:本题的最后打印的是什么?
var user = {
count: 1,
getCount: function () {
// return this; Window
return this.count;
}
}
var func = user.getCount;
console.log(func()); // 问输出的是什么?
输出的是undefined
为什么?看似是this指向的是user,但是user只是保存了匿名函数,但是并没有执行,只有func()此时才执行,所以此时执行是在全局执行,属于函数执行的情况,是window。本题情况类似于
func() = window.func() = window.user.getCount();
延伸1:
如果本题打印return count; 就会报错
var user = {
count: 1,
getCount: function () {
// return this; Window
return count;
}
}
var func = user.getCount;
console.log(func()); // 报错
延伸2:
输出undefined的情况
//1. 情况1:
var a;
console.log(a); // 输出的是undefined
// console.log(b); // b未声明,会报错
//2. 情况2:
var obj = {};
console.log(obj.name); // 输出的是undefined,因为对象里面并没有这个属性
<script>
// 1. 直接打印this
console.log(this); // // Window
参考文章:
个人学习id:201903090124-27,如有不对,欢迎指正。