用Javascript再次讨论这个问题
让我们先看看栗子:
使用这个
特斯拉汽车;
{(CAR =函数)
这一开始=函数(){
console.log('car开始);
};
这个turnkye =函数(){
VaR carkey = document.getelementbyid('car_key);
CarKey。onclick =函数(){
This.start();
};
}
返回此;
}
特斯拉=新车();
Tesla.turnKye();
有与此代码没有错,但这种误解最终导致错误的结果。我们car_key绑定元素的单击事件,并认为嵌套的单击事件在汽车类可以让DOM元素访问这方面的汽车。它看起来合理,但不幸的是它不工作。
在Javascript中,这个关键字总是指向执行范围的所有者。
请仔细想想上面的话。我们知道,一个函数调用生成一个新的范围,和一点点的onclick事件触发的,这一点到DOM元素而非汽车类。
那么我们怎样才能使它工作呢我们通常把这一局部自由变量(例如,_this,自我,我,等等),这体现在很多框架避免范围而产生的问题,在这里我们使用局部变量重写前面的方法:
使用这个
特斯拉汽车;
{(CAR =函数)
这一开始=函数(){
console.log('car开始);
};
这个turnkye =函数(){
var =;
VaR carkey = document.getelementbyid('car_key);
CarKey。onclick =函数(){
That.start();
};
}
返回此;
}
特斯拉=新车();
Tesla.turnKye();
自认为是一个自由变量的onclick事件的离开并不使其重新定义。
如果你熟悉6,你可以使用脂肪的箭头符号,这是更简洁、更容易理解,如下:
使用这个
特斯拉汽车;
{(CAR =函数)
这一开始=函数(){
console.log('car开始);
};
这个turnkye =函数(){
;
VaR carkey = document.getelementbyid('car_key);
{( / / carkey。onclick=功能)
(,即,开始);
/