var m = function() {
a = 3;
console.log(a, b ,this)
};
var init = function () {
var a = 1;
var b = 10;
m.call(this);
}
init();
或
var m = function() {
a = 3;
console.log(a, b ,this)
}.bind(this);
var init = function () {
var a = 1;
var b = 10;
m();
}
init();
会报错,b is not defined, m里的this还是指向了windows
如何通过不传参数的形式,可以访问到init中的变量b?换句话说,可以通过改变m函数调用时的this指向,访问到init中的b嘛?
始终记住一句话:this永远指向最后调用他的对象。
当你执行
init
时,是window
对象在执行,最后调用了上面m
方法,因为在这个方法中,变量a
是没有声明的,所以提升到全局层,因此你是可以在window
对象下找到变量a
的。如果要达到题主所说的效果,在题主的基础上可以这样修改:或者说将
init
提升到一个对象里面去吧: