function test1() {
this.name = 'test1';
var that = this;
function test2() {
this.name = 'test2';
console.log(that.name);
}
test2();
}
test1();
执行此操作时,我希望控制台注销test1
。为什么我会改为test2
?我希望that
变量能够保存对test1
函数的引用。
答案 0 :(得分:1)
您的变量 成为对象引用,因为您为其指定了关键字 this 。这意味着变量 将是一个对象,它将引用 this (即当前对象)。
此外,变量 不是值类型。这是一个对象。
有关详细信息,请搜索"值类型与引用类型"。
希望这有帮助。
答案 1 :(得分:0)
在函数定义中,这指的是函数的“所有者”。 请在内联评论中找到说明。 根据执行顺序重新排列代码,
test1(); //Now this is called by window object
function test1() {
this.name = 'test1'; //window.name = 'test1';
var that = this; //that is also now window obj
test2(); //this.test2 or window.test2()
function test2() {
this.name = 'test2'; //window.name is now test 2
console.log(that.name); //since in third step, that is window, that.name or window.name is now test 2
}
}