如何限制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 限制第一个位置的空间
"函中函" -------------------- func2(func) -------------- 函数名可以当做函数的参数