为什么在javascript打印窗口对象中会出现这种情况?
在chrome开发者工具的为什么在javascript打印窗口对象中会出现这种情况?,javascript,Javascript,在chrome开发者工具的控制台选项卡中,我输入了这个,它显示了窗口对象。这个如何成为这里的窗口对象 console.log(这个)在全局范围内,这个实际上是指向窗口对象。通过调用getName您执行的操作与以下操作相同: window.firstname = "Sivakumar"; window.lastname = "Tadisetti"; 在函数中,此与窗口相同(或运行时中的全局上下文)。如果它是类方法,此将是类实例 您可以通过使用bind或使用apply和call指定来更改此 全局
控制台
选项卡中,我输入了这个
,它显示了窗口
对象。这个如何成为这里的窗口对象
console.log(这个)
在全局范围内,这个
实际上是指向窗口
对象。通过调用getName
您执行的操作与以下操作相同:
window.firstname = "Sivakumar";
window.lastname = "Tadisetti";
在函数中,
此
与窗口相同(或运行时中的全局上下文)。如果它是类方法
,此
将是类实例
您可以通过使用bind
或使用apply
和call
指定来更改此
全局函数示例
var that={}
函数getTest(){
log(this==窗口?“this is window”:“this not window”)
}
getTest()
getTest.call(那个)
应用(那个)
bind(that)(
在全局执行上下文中(在任何函数之外),无论是否处于严格模式,它都引用全局对象
和console.log(this.lastname)代码>在全局范围内,因此此处此
指的是窗口对象
根据MDN
在大多数情况下,其值由函数的运行方式决定
打电话。它不能在执行期间通过赋值进行设置,可能是
每次调用函数时都会发生变化
在您的例子中,这是由JavaScript的执行上下文调用的,该上下文调用要执行的程序。在该上下文变量lastname中存在,这意味着它是该对象的一部分。您在更改lastname变量值的getTest函数之后调用它,这就是为什么在console.log()中看到它的更改值。如果您处于全局上下文中,则此
指的是窗口对象
console.log(这个)代码>@IslamElshobokshy确实如此,至少对我来说,我不明白这个问题。什么让你觉得它不应该工作?你不明白这里有什么此
是窗口
,在调用getNames()
后,您正在更改窗口.firstname
和窗口.lastname
。因此,在第二个日志中,它们被修改。全局范围是窗口对象。所有全局变量都属于窗口对象。lastname
声明为全局变量,可以用作window。lastname
@IslamElshobokshy女孩没有个人资料图片