Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在javascript打印窗口对象中会出现这种情况?_Javascript - Fatal编程技术网

为什么在javascript打印窗口对象中会出现这种情况?

为什么在javascript打印窗口对象中会出现这种情况?,javascript,Javascript,在chrome开发者工具的控制台选项卡中,我输入了这个,它显示了窗口对象。这个如何成为这里的窗口对象 console.log(这个)在全局范围内,这个实际上是指向窗口对象。通过调用getName您执行的操作与以下操作相同: window.firstname = "Sivakumar"; window.lastname = "Tadisetti"; 在函数中,此与窗口相同(或运行时中的全局上下文)。如果它是类方法,此将是类实例 您可以通过使用bind或使用apply和call指定来更改此 全局

在chrome开发者工具的
控制台
选项卡中,我输入了
这个
,它显示了
窗口
对象。这个如何成为这里的窗口对象


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女孩没有个人资料图片