代码之家  ›  专栏  ›  技术社区  ›  Glide

javascript包含问题和陷阱

  •  1
  • Glide  · 技术社区  · 14 年前

    一个人在做javascript时会遇到什么样的问题和陷阱( <script src="sample.js" type="text/javascript><script> )如何避免它们?

    我这么问是因为我刚遇到一个问题,我在一个包含在总体布局模板中的速度模板文件中编写了我的javascript代码。布局模板包含许多不同的javascript。我的javascript代码在一个页面上本身就可以正常工作,但是当它包含在布局模板中时,它就开始中断。(没有javascript错误,但没有工作)。

    1 回复  |  直到 14 年前
        1
  •  1
  •   lincolnk    14 年前

    听起来像是全局对象发生了碰撞。在这个场景中,您最好的选择是将所有代码移动到一个名称空间中,我的意思是创建一个对象或匿名函数来存放您编写的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 存在于用于创建 我的唯一空间 ,所以您不能直接从外部完成(类似于其他语言中的私有成员)。然而,方法 sayWord 定义的范围与 MyWord 然后关闭它,这意味着 MyWord 在方法定义中维护。这也许不是最清楚的解释,但我希望这个例子能解释清楚。