Javascript 命名空间 - 函数之间的变量交换
Javascript namespace - exchange of variable between functions
我知道我在使用命名空间时做了一些非常错误的事情。我在网络/谷歌搜索中研究了大量内容后发布了这个问题。仍然找不到我做错了什么。你能帮帮我吗?这就是我所拥有的
爪哇语
Javascript 文件1
(function (js_namspace1, $, undefined) {
js_namespace1.n1function1 = function(){
var return_obj = {
return_function_to_call: “n1function_name2”
return_function_to_call_namespace: “js_namespace1”
}
js_namespace2.n2function1(return_obj)
}
Js_namespace1.n1function_name2 =function(list_of_names){
Js_namespace1.list_of_names = list_of_names
// do some processing to js_namespace1. list_of_names
}
}
(window. js_namspace1 = window. js_namspace1|| {}, jQuery ));
Javascript 文件2
(function (js_namspace2, $, undefined) {
js_namespace2.n2function1(return_obj) = function(return_obj){
js_namespace2.return_function_to_call = return_obj.return_function_to_call
js_namespace2.return_function_to_call_namespace = return_obj. .return_function_to_call_namespace
// do some processing
Js_namespace2.list_of_names = []
Js_namespace2. list_of_names.push(value_name)
window[js_namespace2.return_function_to_call_namespace][js_namespace2.return_function_to_call]( Js_namespace2.list_of_names);
}
}
(window. js_namspace2 = window. js_namspace2|| {}, jQuery ));
目录
从 html file1 调用 js_namespace1.n1function1,基于最终用户单击字段
js_namespace1.n1function1
调用js_namespace2.n2function1
并显示另一个 html 文件2
在 html file2 中处理数据(收集名称的值(,然后调用返回函数Js_namespace1.n1function_name2
在Js_namespace1.n1function_name2
,过程Js_namespace1.list_of_names(array)
,但是当我这样做时,它也会在Js_namespace2.list_of_names
例如,当我这样做时 Js_namespace1.n1function_name2.push(add_another_name)
,然后调用 js_namespace1.n1function1
(而 又调用 js_namespace2.n2function1
(。 Js_namespace2.list_of_names
包含 add_another_name
的值。
请注意,当从js_namespace1.n1function1
调用js_namespace2.n2function1
时,数组不会作为参数传递。
我的期望是,当js_namespace1.n1function1
呼叫js_namespace2.n2function1
时,它不会用add_another_name
更新Js_namespace2.list_of_names
。
你能解释一下发生了什么吗? 最重要的是指出我在这个设计中应该避免的任何错误(命名空间,函数调用之间的参数交换(。我是否在 javascript 中正确使用了命名空间——有什么最佳实践可以推荐吗?
这是一个来自 Google 快速搜索 JS 最佳实践的链接。有不同的思想流派(例如,使用终止分号(,但是如果您自己无法注意到,使用某种 linter 可能会帮助您找出代码中的拼写错误、区分大小写和意外空格。下面是一些修复的代码:
(function (js_namespace1, $, undefined) {
js_namespace1.n1function1 = function(){
var return_obj = {
return_function_to_call: "n1function_name2",
return_function_to_call_namespace: "js_namespace1"
};
js_namespace2.n2function1(return_obj)
};
js_namespace1.n1function_name2 =function(list_of_names){
js_namespace1.list_of_names = list_of_names;
console.log(js_namespace1.list_of_names); // ["some_name"]
};
}
(js_namespace1 = window.js_namespace1 || {}, jQuery));
(function (js_namespace2, $, undefined) {
js_namespace2.n2function1 = function(return_obj){
js_namespace2.return_function_to_call = return_obj.return_function_to_call;
js_namespace2.return_function_to_call_namespace = return_obj.return_function_to_call_namespace;
// do some processing
js_namespace2.list_of_names = [];
js_namespace2.list_of_names.push("some_name");
window[js_namespace2.return_function_to_call_namespace][js_namespace2.return_function_to_call]( js_namespace2.list_of_names);
};
}
(js_namespace2 = window.js_namespace2 || {}, jQuery));
js_namespace1.n1function1();
关于您的代码和我的修复的一些要点:
- 您使用区分大小写的名称(如
js_namespace2
表示Js_namespace2
。 - 您在此处的语法不正确
js_namespace2.n2function1(return_obj) = function(return_obj)
. - 在这里:
return_obj. .return_function_to_call_namespace
和其他人。 - 未定义
value_name
我在这里测试了代码并看到了预期的行为。
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 用于交换两个变量的 JavaScript 函数
- 在js中交换变量
- JavaScript:交换没有临时变量的字符串变量
- 在两个HTML和PHP之间交换变量
- 有没有一种方法可以在JavaScript和PHP之间交换变量
- 如何使用JavaScript在HTML之间交换变量
- Javascript 命名空间 - 函数之间的变量交换
- 使用数组进行Javascript变量交换
- PHP/Javascript:变量交换&函数调用
- Angular中指令和控制器之间的变量交换
- 这两个变量如何用一行来交换?
- SRC是未定义的图像交换变量
- 用jquery或javascript交换4个变量的值
- 交换时更改img(三个变量)
- 在网站内单击时,将javascript变量(trailimage)交换为另一个需要什么代码
- 在PHP和JavaScript之间交换变量