2013-03-20 22 views
0

避免Javascript中的变量/函数冲突(不使用jQuery插件)的方法是什么?我想创建自己的新功能,但要避免冲突。如何避免Javascript中的变量/函数冲突(没有使用jQuery插件)

我认为使用函数作用域(仅用于作用域的函数)是一种方法。还有什么其他的可能性?

另外,当你将某些功能封装在某些内容中以避免冲突时,你如何从外部访问它?

我在寻找基本的例子。

+0

jQuery插件(或任何插件)不会帮助命名冲突。 – RobG 2013-03-20 08:12:37

回答

1

如果您只将方法附加到将调用它们的其他对象,则可以将代码封装在立即调用的函数表达式(IIFE)中,以便在不创建任何新的全局对象或属性的情况下分配方法。该策略对于附加侦听器很有用,其中变量通过闭包共享给IIFE的执行上下文而不是全局上下文,并且由于它们附着在执行上下文中已经存在的对象上,因此可能没有其他全局对象或变量。

虽然这样的函数仍然可以访问全局函数。

第二种策略是创建一个命名对象并将所有方法附加到属性中。您还可以共享值作为对象的属性,或通过IIFE指定的函数中的闭包来共享。

实际上,对所有全局变量适当选择的随机前缀同样适用于避免名称冲突,但并不普遍。

+0

你能否为这两种方法提供非常基本的例子? – testndtv 2013-03-20 08:24:43

+0

有关IIFE的更多信息(包括代码示例),请查看http://benalman.com/news/2010/11/immediately-invoked-function-expression/ - 特别是标有“模块模式”的部分 – 2013-03-20 14:20:15