Javascript对象表示法问题

Javascript对象表示法问题,javascript,pojo,object-notation,Javascript,Pojo,Object Notation,我有这个小把戏,只是想提醒大家,如果javascript存在于两个文件中的话 嗯。。正如您在演示中所看到的,dom作用域正在以某种方式被覆盖,我想了解原因。我的意思是,self=这个黑客肯定是一个糟糕的做法,但我不明白为什么会被覆盖 我找不到语言来描述这个问题,对此我很抱歉,但小提琴是我找到的唯一能轻松解释我的问题的方法。所有关于这个的猜测都是无关紧要的,每个人都在引导你走上错误的道路 问题在于self没有通过使用var进行绝缘,因此它是全局的。第二个self覆盖第一个 只要让它var self

我有这个小把戏,只是想提醒大家,如果javascript存在于两个文件中的话

嗯。。正如您在演示中所看到的,dom作用域正在以某种方式被覆盖,我想了解原因。我的意思是,self=这个黑客肯定是一个糟糕的做法,但我不明白为什么会被覆盖


我找不到语言来描述这个问题,对此我很抱歉,但小提琴是我找到的唯一能轻松解释我的问题的方法。

所有关于
这个
的猜测都是无关紧要的,每个人都在引导你走上错误的道路

问题在于
self
没有通过使用
var
进行绝缘,因此它是全局的。第二个
self
覆盖第一个

只要让它
var self=this
就可以让一切正常。您所做的是避免在jQuery事件处理程序中更改
this
的上下文


所有关于
的猜测都与此无关,每个人都在引导你走上错误的道路

问题在于
self
没有通过使用
var
进行绝缘,因此它是全局的。第二个
self
覆盖第一个

只要让它
var self=this
就可以让一切正常。您所做的是避免在jQuery事件处理程序中更改
this
的上下文


因为
on
jQuery方法将元素作为上下文传递
这个
取决于调用函数的方式,它是动态的。你有
cta={}
,然后是
this.cta=$(cta)
——这将导致一个或多或少无用的jQuery对象。您将“cta”初始化为一个ampty对象,然后在其周围放置一个jQuery包装器。你期望它做什么?(它不会真的做任何有用的事。)@Pointy你说得对,我不太明白,这就是为什么我要问。我试图理解为什么这种方式(如此)错误:我现在所做的,是如何解决问题,我只是好奇,因为我不明白为什么会发生覆盖。而且我也知道我在用一种奇怪的方式做一件简单的事情。但对我来说,范围应该是separetedIt,这不是奇怪的行为,而是正常的JavaScript行为。您可以在运行时更改函数的上下文,
不是对任何内容的引用,它完全取决于函数的调用方式。只要在谷歌上搜索“JavaScript这个关键字”,你就会发现很多信息
self=this
是常见的操作。因为
on
jQuery方法将元素作为上下文传递
这个
取决于调用函数的方式,它是动态的。你有
cta={}
,然后是
this.cta=$(cta)
——这将导致一个或多或少无用的jQuery对象。您将“cta”初始化为一个ampty对象,然后在其周围放置一个jQuery包装器。你期望它做什么?(它不会真的做任何有用的事。)@Pointy你说得对,我不太明白,这就是为什么我要问。我试图理解为什么这种方式(如此)错误:我现在所做的,是如何解决问题,我只是好奇,因为我不明白为什么会发生覆盖。而且我也知道我在用一种奇怪的方式做一件简单的事情。但对我来说,范围应该是separetedIt,这不是奇怪的行为,而是正常的JavaScript行为。您可以在运行时更改函数的上下文,
不是对任何内容的引用,它完全取决于函数的调用方式。只要在谷歌上搜索“JavaScript这个关键字”,你就会发现很多信息
self=这是常见的事情。最后!谢谢你@charlietfl,我曾一度认为self可以在该功能内部实现全球化。也谢谢你的演示。如果你碰巧有一些与信息相关的链接,那就太好了。任何时候你不使用
var
它都会使varible在范围内上升到顶部,从而产生意想不到的行为。始终使用它是最佳实践。只需搜索javascript范围和javascript Closure非常感谢,您的答案最终非常有用!谢谢你@charlietfl,我曾一度认为self可以在该功能内部实现全球化。也谢谢你的演示。如果你碰巧有一些与信息相关的链接,那就太好了。任何时候你不使用
var
它都会使varible在范围内上升到顶部,从而产生意想不到的行为。始终使用它是最佳实践。只需搜索javascript范围和javascript Closure非常感谢,您的回答非常有用