这段代码js是如何解析的?
这个就是经典的this
问题,请Google下js this
或在SF里面搜下js this
即可,比如参考下面两篇文章:
var name;
name = 'The Window';
var object = {};
object.name = 'My Object';
object.getNameFunc = function(){
console.log(this.name); //My Object 'My Object';
return function(){
return this.name; //window.name 'The Window';
}
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
当你执行object.getNameFunc()时,返回的是一个匿名函数:
当你调用该匿名函数时,这时的this指向的是window,因为js中所有匿名函数的this都执行window,所以最后返回的值是'The Window'。如果你想让当前匿名函数返回当前object中的name有两种方法:
1:为object方法中指定一个that变量,让that指向this。在对象方法中的this指向的都是当前对象。
2:使用call来调用该匿名函数,改变this的指向。