Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 实例化通过jQuery.getScript加载的类时遇到ReferenceError_Javascript_Jquery - Fatal编程技术网

Javascript 实例化通过jQuery.getScript加载的类时遇到ReferenceError

Javascript 实例化通过jQuery.getScript加载的类时遇到ReferenceError,javascript,jquery,Javascript,Jquery,(环境:Chromium浏览器或NWJS运行包含HTML、CSS和JS以及jQuery 1.12.0的用户界面;在浏览器和NWJS中观察到完全相同的行为) 我有一个定制的HaltError子类,它用一些额外的东西扩展了Javascript错误类;这是一个被所有页面加载的.js文件,因为它意味着可以被普遍访问 我注意到,如果文件是通过ye olde HTML标记加载的,那么一切都会按预期进行,我可以在任何给定页面使用的任何其他.js文件中创建并抛出错误。例如,无论我将其粘贴到何处,以下内容都可以正

(环境:Chromium浏览器或NWJS运行包含HTML、CSS和JS以及jQuery 1.12.0的用户界面;在浏览器和NWJS中观察到完全相同的行为)

我有一个定制的HaltError子类,它用一些额外的东西扩展了Javascript错误类;这是一个被所有页面加载的.js文件,因为它意味着可以被普遍访问

我注意到,如果文件是通过ye olde HTML标记加载的,那么一切都会按预期进行,我可以在任何给定页面使用的任何其他.js文件中创建并抛出错误。例如,无论我将其粘贴到何处,以下内容都可以正常工作:

var tst = new HaltError("Test error!"); //create error
throw tst.log(); //goodies happen
但是,如果通过jQuery的getScript()加载包含HaltError类的.js文件,则上述操作将不起作用,而我将得到一个ReferenceError:

var tst = new HaltError("Test error!"); //ReferenceError; HaltError is not defined
这对于任何.js文件都是如此,除了包含HaltError子类定义的文件外,该文件工作正常。在该文件中,函数可以创建HaltError的实例,而不会出现问题:

function throw_HaltError() //call this from another file, and it works fine
{
  var test_error = new HaltError("Test error thrown!"); //works
  throw test_error.log(); //throws without issue
}
我想知道这是否是一个名称空间问题,但实际上,我放在同一个文件中的任何其他内容似乎都可以从其他文件或DevTools控制台访问;函数、变量等可以很好地引用

我知道getScript()的异步特性,不认为这是问题所在。例如,在DevTools中,在加载页面并确认可以在控制台中看到该.js文件中的函数之后,我仍然无法创建HaltError类的新实例(或者在控制台中键入时出现的autocomplete下拉列表中根本看不到HaltError)

所以我的问题是,类是否有一些不同之处,这意味着它们在通过$.getScript()加载时会中断


我觉得我可能错过了一些基本的东西

作为补充;我在一个完全隔离的环境中的另一台计算机上复制了完全相同的行为(除了一个带有and标记的空index.html,jQuery 1.12.4,以及一个包含类的.js文件,该文件是使用$.getScript()加载的)作为附加文件;我在一个完全隔离的环境中的另一台计算机上复制了完全相同的行为(只有一个带and标记的空index.html、jQuery 1.12.4和一个包含类的.js文件,该文件是使用$.getScript()加载的)