javascript变量返回奇怪的输出

时间:2017-01-10 16:49:55

标签: javascript

我是新来的Javascript新手。当我将值输出到控制台时,我遇到了一个奇怪的问题。据我所知在这两种情况下,名称和颜色是访问它们的对象车的属性我们需要使用this.propertyName或object.propertyName,但是当我将这些值输出到控制台而不使用这个或对象时name,1st console.log返回一个空字符串,另一个返回未捕获的引用错误。他们指向窗口对象吗?那么在这两种情况下,它应该返回一个未被引用的参考,请有人在这里请澄清这一点..在此先感谢。 :)

var car = {
    name : "ford",
    color:"red",
    log : function(){

         console.log(name);
        // outputs an empty string

         console.log(color); 
        // Returns error (this.js:8 Uncaught ReferenceError: color is not defined)

    }
}

car.log();

3 个答案:

答案 0 :(得分:4)

尝试console.log(this.name)console.log(this.color)

来自MDN的其他信息

  

当一个函数作为一个对象的方法被调用时,它被设置为   调用该方法的对象。

     

在以下示例中,在函数内部调用o.f()时   这与o对象绑定。

     

来源:MDN

答案 1 :(得分:2)

输出ReferenceError时未获得name的原因是浏览器有built-in global called name:它是当前窗口的名称。但他们没有内置的全局名为color,因此您会收到错误。

要在使用name时访问对象上的colorcar.log(),您需要使用this.namethis.color

答案 2 :(得分:0)

是的,你是对的,两者都应该抛出未被引用的引用,但等待......

实际上窗口上有一个属性..是啊...... 名称

所以实际上你控制了窗口的属性..即window.name

..第二个是正确的..未被引用的参考