javascript变量返回奇怪的输出
我是新来的,不熟悉Javascript。当我将值输出到控制台时,这里出现了一个奇怪的问题。据我所知,在这两种情况下,名称和颜色都是object car的属性,要访问它们,我们需要使用this.propertyName或object.propertyName,但当我将这些值输出到控制台而不使用this或object name时,第一个console.log返回空字符串,另一个返回未捕获的引用错误。它们是否指向窗口对象?那么在这两种情况下,它都应该返回一个未捕获的引用,这里有人能澄清一下吗。。提前感谢。:) 尝试javascript变量返回奇怪的输出,javascript,Javascript,我是新来的,不熟悉Javascript。当我将值输出到控制台时,这里出现了一个奇怪的问题。据我所知,在这两种情况下,名称和颜色都是object car的属性,要访问它们,我们需要使用this.propertyName或object.propertyName,但当我将这些值输出到控制台而不使用this或object name时,第一个console.log返回空字符串,另一个返回未捕获的引用错误。它们是否指向窗口对象?那么在这两种情况下,它都应该返回一个未捕获的引用,这里有人能澄清一下吗。。提前感
console.log(this.name)
和console.log(this.color)
来自MDN的其他信息
当函数作为对象的方法调用时,它的this设置为
调用该方法的对象
在下面的示例中,当调用o.f()时,在函数内部
这是绑定到o对象的
资料来源:
尝试console.log(this.name)
和console.log(this.color)
来自MDN的其他信息
当函数作为对象的方法调用时,它的this设置为
调用该方法的对象
在下面的示例中,当调用o.f()时,在函数内部
这是绑定到o对象的
资料来源:
输出
name
时不会出现ReferenceError
的原因是浏览器有一个:它是当前窗口的名称。但是它们没有一个名为color
的内置全局设置,因此您会得到错误
要在使用
car.log()
时访问对象上的name
和color
,您需要使用this.name
和this.color输出name
时,您没有得到引用错误的原因是浏览器有一个:它是当前窗口的名称。但是它们没有一个名为color
的内置全局设置,因此您会得到错误
当您使用car.log()
时,要访问对象上的name
和color
,您应该使用this.name
和this.color是的,您是正确的,两个都应该抛出未捕获的引用,但请稍候
实际上,window上有一个属性是。。嗯名称
所以实际上你可以控制窗口的属性。。我的名字
。。第二个是正确的。。未捕获引用是的,您是对的,两个都应该抛出未捕获引用,但请稍候
实际上,window上有一个属性是。。嗯名称
所以实际上你可以控制窗口的属性。。我的名字
。。第二个是正确的。。未捕获引用我想你的意思是this.color
。我想你的意思是this.color
。变量name
和color
在你的作用域中不存在,所以JavaScript在外部作用域中查找,然后在全局作用域中查找。您的name
实际上指的是窗口。name
@RocketHazmat谢谢您变量name
和color
在您的作用域中不存在,因此JavaScript在外部作用域和全局作用域中查找它们。您的名称
实际上指的是窗口。name
@RocketHazmat谢谢您此全局名称
与窗口不同。name
,是吗?因为如果我们在这段代码中用window.name替换name,我们会得到未定义的名称。@MohitBhardwaj:是的,它是,而且不是,window.name
不会是未定义的(前提是这是默认的窗口
全局,而不是其他东西)。是的,对不起,你是对的。它是窗口。名称
,它控制空白字符串而不是未定义的
。谢谢:)@T.J.Crowder我真的很感谢你的回答。将window.name设置为空字符串有什么特殊用途吗?@seshukumar:这只是默认设置。如果使用命名它的链接打开该名称,例如:(该窗口的名称将是“wnd42”
),或通过窗口。打开(窗口。打开(窗口(“…”,“wnd42”)
)。此全局名称与窗口不同。名称是不是?因为如果我们在这段代码中用window.name替换name,我们会得到未定义的名称。@MohitBhardwaj:是的,它是,而且不是,window.name
不会是未定义的(前提是这是默认的窗口
全局,而不是其他东西)。是的,对不起,你是对的。它是窗口。名称
,它控制空白字符串而不是未定义的
。谢谢:)@T.J.Crowder我真的很感谢你的回答。将window.name设置为空字符串有什么特殊用途吗?@seshukumar:这只是默认设置。如果使用命名该名称的链接打开该名称,例如:
(该窗口的名称将是“wnd42”
),或通过窗口。打开(窗口。打开(“…”,“wnd42”)
)。
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();