this.radioStation在以下代码中引用了什么:' this.radiostaion'参考汽车或功能chagestation。您的意见/澄清将不胜感激。有什么好的经验法则可以解决这个问题吗?
var Car = function () {
var gasolineLevel = 10;
function useGas (amt) {
if(gasolineLevel - amt < 0) {
console.log("out of gas :[");
} else {
gasolineLevel -= amt;
}
};
return {
radioStation: "104.5",
changeStation: function (station) {
this.radioStation = station;
},
go: function (speed) { useGas(speed); }
};
};
var Ferrari = Car();
console.log(Ferrari);
console.log(Ferrari.go(2));
console.log(Ferrari.go(10));
答案 0 :(得分:0)
在changeStation
中,this
将是调用changeStation
时设置的内容。在正常函数中,this
实际上是一个隐藏的参数,它由函数的调用方式决定。
在该具体示例中,您永远不会致电changeStation
,因此我们无法告诉您,如果/您何时会this
。
如果你这样称呼它:
var ferrari = Car();
ferrari.changeStation();
...然后this
将引用Car
创建的对象(ferrari
引用的对象,由Car
最后返回的对象初始值设定项创建),因为我们在changeStation
上调用了ferrari
作为属性访问器操作的一部分。
但如果你这样称呼它:
var ferrari = Car();
var changeStation = ferrari.changeStation;
changeStation();
然后this
将引用全局对象(在松散模式下)或undefined
(在严格模式下)。