var obj = {
str : 'value',
tall : function(){
console.log(this.str);
}
};
setTimeout(obj.tall, 1000);
setTimeout(obj.tall(), 1000);
setTimeout(function(){
obj.tall();
}, 1000);
代码执行后,输出的结果分别是: undefined, value, value
对第一个打印“undefined”不理解?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第一个等价于
按输出顺序应该是: value, undefined, value。
解释:
第一个是:
这句输出的,因为立即调用了obj.tall()
第二个是:
解释参考:@crp205 答案。 this并不是指向obj的。
第三个:
此时this指向obj
输出的结果应该是
value,undefined,value吧,第一个的确是像上面那个说的那样。个人想法,有什么问题还望指正。
1.接着第一位的回答补充。
类似于
里面函数的执行属于函数调用模式,函数调用模式this代表全局对象window
最后分享一道面试题: