为什么我的代码不能访问这个变量?
Why can't my code access this variable?
我正在尝试使用 SDK 为另一个程序构建扩展。代码写在JavaScript.
我正在使用 SDK 的内置 requireJS 功能加载外部库 (Highcharts)。
但是,当我尝试通过 Highcharts 变量访问 Highcharts 时,浏览器告诉我它未定义。
我尝试 console.log(this) 我的代码,在它应该被加载之后,你可以在下面的图像中看到输出。 Highcharts 似乎已加载。当我尝试 console.log(EPCMPROXY) 时,我得到了那个对象,但是当我尝试 console.log(Highcharts) 时,我得到了未定义的。如果我打开浏览器的控制台 window,并手动输入 Highcharts,它 returns 对象。我是做错了什么,还是错误地引用了 Highcharts?当它们在同一范围内时,我怎么可能访问一个对象 (EPCMPROXY) 而不能访问另一个对象 (Highcharts)?
代码:
console.log(this);
console.log(Highcharts);
console.log(EPCMPROXY); //some var generated by the page, used as example here
console.log(这个)的输出:
j {owner: f, init: function, componentDeleted: function, beforeUpdate: function, afterUpdate: function…}
$:function ()
arguments : null
caller : null
length : 0
name : ""
prototype : Object
__proto__ : function ()
[[FunctionLocation]] : combined_static_includes_1.jsversion=20170105152024:25
[[Scopes]]:Scopes[2]
0 : Closure (a)
1 : Global
$ : function (e,i)
AsyncHandleJavascriptError : function AsyncHandleJavascriptError(a)
EPCMPROXY : Object
ES6Promise : Object
Highcharts : Object
console.log(Highcharts) 的输出:
undefined
console.log(EPCMPROXY) 的输出:
Object
...
问题是当行 "console.log(Highcharts)" 被执行时,它实际上还没有加载(由于我的 requireJS 设置有问题)。正如 dsfq 指出的那样,我在执行 "console.log(this)" 时可以看到它的原因是它显示了可能稍后加载的对象,因为它是 运行 异步的。可以在屏幕截图中看到的蓝色小 "i" 图标实际上是来自 Chrome 的工具提示,其中指出:"Value below was evaluated just now".
我正在尝试使用 SDK 为另一个程序构建扩展。代码写在JavaScript.
我正在使用 SDK 的内置 requireJS 功能加载外部库 (Highcharts)。
但是,当我尝试通过 Highcharts 变量访问 Highcharts 时,浏览器告诉我它未定义。
我尝试 console.log(this) 我的代码,在它应该被加载之后,你可以在下面的图像中看到输出。 Highcharts 似乎已加载。当我尝试 console.log(EPCMPROXY) 时,我得到了那个对象,但是当我尝试 console.log(Highcharts) 时,我得到了未定义的。如果我打开浏览器的控制台 window,并手动输入 Highcharts,它 returns 对象。我是做错了什么,还是错误地引用了 Highcharts?当它们在同一范围内时,我怎么可能访问一个对象 (EPCMPROXY) 而不能访问另一个对象 (Highcharts)?
代码:
console.log(this);
console.log(Highcharts);
console.log(EPCMPROXY); //some var generated by the page, used as example here
console.log(这个)的输出:
j {owner: f, init: function, componentDeleted: function, beforeUpdate: function, afterUpdate: function…}
$:function ()
arguments : null
caller : null
length : 0
name : ""
prototype : Object
__proto__ : function ()
[[FunctionLocation]] : combined_static_includes_1.jsversion=20170105152024:25
[[Scopes]]:Scopes[2]
0 : Closure (a)
1 : Global
$ : function (e,i)
AsyncHandleJavascriptError : function AsyncHandleJavascriptError(a)
EPCMPROXY : Object
ES6Promise : Object
Highcharts : Object
console.log(Highcharts) 的输出:
undefined
console.log(EPCMPROXY) 的输出:
Object
...
问题是当行 "console.log(Highcharts)" 被执行时,它实际上还没有加载(由于我的 requireJS 设置有问题)。正如 dsfq 指出的那样,我在执行 "console.log(this)" 时可以看到它的原因是它显示了可能稍后加载的对象,因为它是 运行 异步的。可以在屏幕截图中看到的蓝色小 "i" 图标实际上是来自 Chrome 的工具提示,其中指出:"Value below was evaluated just now".