我以为我理解了 call
在 javascript 中的工作原理,但显然没有。
function bear(){
var a = 1
pig.call(this)
}
function pig(){
alert(a) //throws an error, 'a is not defined'
}
bear()
http://codepen.io/anon/pen/jEYGOv
为什么这不起作用?我怎样才能让它工作(不传递a
作为变量)
最佳答案
你不能这么做。
function bear(){
pig.call(this);
}
function pig(){
this.a = 5; //same as window.a = 5 unless used as a constructor;
}
bear(); //window.a == 5;
a = new bear(); //this keyword is now referring to variable object a so a.a = 5;
此外,.call(this)
第一个参数之后的任何参数都将是您调用 call()
的函数的参数
关于javascript - 为什么我的上下文没有被共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28446128/