我怎样才能找到'这个'在遵循Javascript代码?

时间:2016-12-08 08:01:43

标签: javascript this

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));

1 个答案:

答案 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(在严格模式下)。