书中说this是函数内部的一个特殊对象。那么应该说this只存在于函数的内部,但是在全局情况下,直接对this和arguments进行输出:
console.log("try this:"+this);
console.log("try arguments:"+arguments);
输出结果是:
try this:[object Window]
Uncaught ReferenceError: arguments is not defined
arguments同为函数内部的对象,在全局进行直接输出是显示的是未定义。
求解!
1)arguments是在函数内才是有效的,可以认为是一个函数的属性对象,而不是任何对象都有的
2)在浏览器环境下,全局对象为window,在nodejs环境下,全局对象为global
3)以下代码,你可以得到你想要的
官方说法:
“JavaScript可以允许使用this关键字来引用全局对象”——《JavaScript权威指南》P58最后一行文字。
this
是函数的一个关键字,是函数内部的一个特殊对象,没错,但没有说this只存在于函数的内部!事实上,在全局运行上下文中(在任何函数体外部),this
指代全局对象(浏览器中全局对象是window)。浏览器环境,
arguments只有在函数内生效,
this在函数调用内指向浏览器的window对象