JS代码是:
this.sound1 ="global";
function cat(){
this.sound = 'meawo!!!!';
this.sound1 = 'meawooooo!!!!';
meawo1 = function(){
console.log(this.sound1);
console.log(this);
};
function meawo2(){
console.log(this.sound1);
console.log(this);
};
this.meawo = function(){
console.log(this.sound);
console.log(this);
meawo1();
meawo2();
};
};
var c = new cat();
c.meawo();
问题:如何this
meawo1
(函数表达式)& meawo2
(函数表达式声明)是指“global”而不是对象c
?那是为什么?
答案 0 :(得分:2)
在想知道this
引用的对象时,请记住一个简单的提示。
obj.method();
在上文中,method
上会调用obj
,因此this
中的method
将会被调用,即obj = this
在您的情况下,虽然在meowo
上调用c
,但meowo1
和meowo2
<\ n> <\ n>参考。
没有调用它们的显式作用域的函数默认为全局上下文,尽管函数本身不是全局的,并且由于闭包而可以利用其父上下文中的所有变量。