如何限制javascript / jquery中函数的范围[重复]

Posted

技术标签:

【中文标题】如何限制javascript / jquery中函数的范围[重复]【英文标题】:How to limit scope of a function in javascript/ jquery [duplicate] 【发布时间】:2016-02-26 11:35:22 【问题描述】:

我在页面上链接了多个 .js 文件,这些文件具有同名的功能,例如以下样机

first.js

function DisplayContent(data,$target) // data is string

     $target.html('<span>'+ data +'</span>')

second.js

function DisplayContent(data,$target) // data is string

     $target.html('<div>'+ data +'</div>')

以上两个文件都引用了页面。

如何在不重命名函数的情况下解决上述问题。

如果方法有误请指正。

谢谢

【问题讨论】:

你为什么不把它保存在一个js中,然后再确定一个参数。? 听说过揭示模块模式吗? @Guruprasad 我可以做到,但我不想重复代码。由于每个js文件都有自己的功能,问题是我需要同时引用两个js。 这些功能分别在哪里使用?仅在写入它们的文件中? @Mayank 你在同一个文件或其他地方调用这些函数?? 【参考方案1】:

您可以在 javascript 文件中使用命名空间:

first.js:

var first= 
  DisplayContent: function DisplayContent(data,$target) 
  
     $target.html('<span>'+ data +'</span>')
  ,
     [additional methods in the first object]
;

second.js

var second= 
  displayContent: function DisplayContent(data,$target) 
  
      $target.html('<div>'+ data +'</div>')
  ,
  [additional methods for the second implementation]
;

然后调用Namespace.method之类的方法,即first.DisplayContent()

【讨论】:

【参考方案2】:

我猜会更好

function DisplayContent(data,$target,htmltag) // data is string

     $target.html('<' + htmltag + '>' + data + '</' + htmltag + '>')

【讨论】:

【参考方案3】:

如果您仅在该文件本身中调用这些函数,那么您可以像这样限制范围:

First.js

(
  function()
    function DisplayContent(data,$target) // data is string
    
         //$target.html('<span>'+ data +'</span>')
         alert("first file");
    

    DisplayContent('test','test');

    //here you can place other code
());

Second.js

(
  function()
    function DisplayContent(data,$target) // data is string
    
         //$target.html('<div>'+ data +'</div>')
         alert("Second file");
    

    DisplayContent('test','test');

    //here you can place other code
  ()
);

See a demo

【讨论】:

【参考方案4】:

多种方式。

    如果您不希望它们发生冲突,您可以在您的 second.js 中执行此操作。这将允许您在页面中独立使用 second.js,并且此函数会触发。

     if(typeof DisplayContent !=='function')
        function  DisplayContent()
    
      
     
    

    你可以像 Manwal 正确指出的那样去关闭。

但是,拥有两个同名的函数并没有多大意义。你应该避免这种情况。

【讨论】:

【参考方案5】:

如果您将两个 JS 文件添加到单个页面,这两个文件将在单个 javascript 上下文中运行,并且函数将被替换,从而导致结果不可接受。因此,制作不可能满足您的要求。

【讨论】:

以上是关于如何限制javascript / jquery中函数的范围[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Javascript/JQuery 在移动浏览器中限制点运算符('.')

如何使用 jquery/javascript 在summernote 编辑器中为 textarea 限制第一个位置的空间

JQUERY 一个文本框,限制只能输入百分比或者货币类型

"函中函" -------------------- func2(func) -------------- 函数名可以当做函数的参数

JavaScript Jquery限制输入到数字

如何限制用户在点号后只能输入 5 或更大