我是新来的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();
答案 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
时访问对象上的color
和car.log()
,您需要使用this.name
和this.color
。
答案 2 :(得分:0)
是的,你是对的,两者都应该抛出未被引用的引用,但等待......
实际上窗口上有一个属性..是啊...... 名称
所以实际上你控制了窗口的属性..即window.name
..第二个是正确的..未被引用的参考