javascript包含问题和陷阱

时间:2010-09-10 21:19:25

标签: javascript

在执行javascript包含(<script src="sample.js" type="text/javascript><script>)以及如何避免它们时会遇到哪些问题和陷阱?

我问这个是因为我遇到了一个问题,我在速度模板文件中编写了我的javascript代码,该文件包含在整体布局模板中。布局模板包含许多不同的JavaScript。我的javascript代码本身在页面上运行得很好,但是当它包含在布局模板中时,它开始破坏。 (没有javascript错误,但事情不起作用)。

1 个答案:

答案 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的访问。这可能不是最清楚的解释,但我希望这个例子能说清楚。