Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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连接失败_Javascript_Jquery_Firefox_Google Chrome_Prototypejs - Fatal编程技术网

Javascript 原型和jQuery连接失败

Javascript 原型和jQuery连接失败,javascript,jquery,firefox,google-chrome,prototypejs,Javascript,Jquery,Firefox,Google Chrome,Prototypejs,编辑:我已经把jQuery和原型库从等式中去掉了,但问题仍然存在 简化测试用例1- $function在a.js中使用window.$标记,并在b.js中以函数表示法声明。b、 js第二次加载,并覆盖.js$函数 简化测试用例2- 将a.js和b.js组合在一起,第一个是a,第二个是b。函数声明 我在尝试连接prototype和jQuery时发现了一些奇怪的东西。似乎在连接时,$jquery引用不会被原型覆盖。我已经构建了两个测试用例来挑出这一点,但它在Chrome8和FF3.6中失败了 测试用

编辑:我已经把jQuery和原型库从等式中去掉了,但问题仍然存在

简化测试用例1- $function在a.js中使用window.$标记,并在b.js中以函数表示法声明。b、 js第二次加载,并覆盖.js$函数

简化测试用例2- 将a.js和b.js组合在一起,第一个是a,第二个是b。函数声明

我在尝试连接prototype和jQuery时发现了一些奇怪的东西。似乎在连接时,$jquery引用不会被原型覆盖。我已经构建了两个测试用例来挑出这一点,但它在Chrome8和FF3.6中失败了

测试用例1- jQuery和Prototype使用不同的脚本标记分别加载。首先加载jQuery,然后加载Prototype

测试用例2- jQuery和Prototype连接到单个文件中,并使用单个脚本标记加载。jQuery是脚本中的第一个,然后添加prototype

它们的作用应该相同,但第二个测试会抛出错误,因为prototype中的$function不会覆盖$jquery引用

这些设置是否错误,或者当javascript都在同一个文件中时,浏览器呈现javascript的方式是否不同?

如果在代码中调用jQuery.noConflict,jQuery会将$的值恢复到抓取它之前的值

不知道为什么一开始它没有被覆盖

加载时的值为$。在noConflict调用中恢复旧引用。

如果在代码中调用jQuery.noConflict,jQuery将把$的值恢复到它捕获它之前的值

不知道为什么一开始它没有被覆盖


加载时的值为$。在noConflict调用中恢复旧引用。

原型中的$function用函数声明实例化:

function $(element) {
由于原型库不在闭包中,因此假定的范围是窗口。变量和函数声明被提升到作用域的顶部,因此函数$被声明,然后$变量被jQuery覆盖


这里有一个小问题:

原型中的$function是用函数声明实例化的:

function $(element) {
由于原型库不在闭包中,因此假定的范围是窗口。变量和函数声明被提升到作用域的顶部,因此函数$被声明,然后$变量被jQuery覆盖


这里有一个问题:

是的,我在我的项目中添加了这一部分,但我更担心的是,为什么在第二次加载原型时,$var没有被覆盖。@Corey:是的,这看起来很奇怪。我现在正在查看您的连接文件。是的,我在项目中添加了这一部分,但我更担心的是,为什么在第二次加载原型时$var没有被覆盖。@Corey:是的,这看起来很奇怪。我现在正在查看您的连接文件。但这并不能解释当加载到单独的脚本标记中时,函数声明如何覆盖jQuery定义的函数声明。我有一个理论。这两个文件都在同一范围内执行,但顺序相同。如果两个库都在同一个文件中,那么所有全局声明都会被提升到顶部,我们可以看到我们正在讨论的行为。如果库位于单独的文件中,则提升会发生两次,因此jQuery$声明首先发生,然后在解析第二个文件时发生Prototype$声明,覆盖jQuery。@Corey:我想知道如果在连接的库之间插入jQuery.noConflict调用会发生什么…@draeton:我猜它会将$reference恢复到它的未定义值,从而允许用函数声明覆盖它?-一定要看看这篇关于提升的文章:但这并没有解释在单独的脚本标记中加载时,函数声明如何覆盖jQuery定义的函数声明。我有一个理论。这两个文件都在同一范围内执行,但顺序相同。如果两个库都在同一个文件中,那么所有全局声明都会被提升到顶部,我们可以看到我们正在讨论的行为。如果库位于单独的文件中,则提升会发生两次,因此jQuery$声明首先发生,然后在解析第二个文件时发生Prototype$声明,覆盖jQuery。@Corey:我想知道如果在连接的库之间插入jQuery.noConflict调用会发生什么…@draeton:我猜它会将$reference恢复到它的未定义值,从而允许用函数声明覆盖它?-一定要看看这篇关于提升的文章: