在执行javascript包含(<script src="sample.js" type="text/javascript><script>
)以及如何避免它们时会遇到哪些问题和陷阱?
我问这个是因为我遇到了一个问题,我在速度模板文件中编写了我的javascript代码,该文件包含在整体布局模板中。布局模板包含许多不同的JavaScript。我的javascript代码本身在页面上运行得很好,但是当它包含在布局模板中时,它开始破坏。 (没有javascript错误,但事情不起作用)。
答案 0 :(得分:1)
听起来像是在碰撞全局物体。在这种情况下,您最好的选择是将所有代码移动到命名空间中,我的意思是创建一个对象或匿名函数来存放您编写的javascript代码。
例如而不是仅仅做
var myWord = 'hello!';
alert(myWord);
名称myWord
可能已在使用中,您可以
(function() {
var myWord = 'hello!';
alert(myWord);
})();
或者如果你需要坚持下去,
var myUniqueNamespace = new (function() {
this.myWord = 'hello!';
})();
alert(myUniqueNamespace.myWord);
您只需要确保myUniqueNamespace
确实是一个唯一的名称,并且您可以添加任何您喜欢的名称作为属性。
关闭评论:不完全,但我们可以像这样做一个
var myUniqueNamespace = new (function() {
var myWord = 'hello!';
this.sayWord = function() { return myWord; };
})();
alert(myUniqueNamespace.sayWord());
myWord
存在于用于创建myUniqueNamespace
的匿名函数的范围内,因此您无法直接从外部执行此操作(类似于其他语言中的私有成员)。但是方法sayWord
在与myWord
相同的范围内定义并关闭它,这意味着在方法定义内保持对myWord
的访问。这可能不是最清楚的解释,但我希望这个例子能说清楚。