我正在尝试通过命名空间来清理我的代码,这对我来说是新的。我有一个非常基本的应用程序,它发出一个Ajax请求,然后在响应中加载大量内容。代码开始看起来很乱,所以我想命名它,然后调用以AJAX响应为参数的命名空间函数。 1.可以而且应该这样做吗? 2.如果是这样,这里是代码
var GETDATA = {
myAlert: "this variable is the property of a namespace",
// response?: ???? do i need to declare response var here somehow
myNSFunction: function () {
alert(this.myAlert)
}
//theFunctionIWant: function (response??) {
// takes the response from ajax request
// does some stuff to it.
//}
};
$(document).ready(function() {
$( "#my-form" ).submit(function( event ) {
$.ajax({
type: 'GET',
url: "http://localhost:3000/DATA"
})
.done(function(response) {
//GETDATA.theFunctionIWant();
});
});

任何帮助非常感谢。
答案 0 :(得分:0)
var GETDATA = {
myAlert: "this variable is the property of a namespace",
myNSFunction: function () {
alert(this.myAlert)
},
theFunctionIWant: function (response) {
console.log(response);
}
};
$(document).ready(function () {
$("#my-form").submit(function (event) {
$.ajax({
type: 'GET',
url: "http://localhost:3000/DATA"
})
.done(function (response) {
GETDATA.theFunctionIWant(response);
}
});
});
<小时/> 你应该这样做吗?
如果不理解你的整体目标和事物的规模,很难通过判断,但大多数情况下都是如此。你必须问自己,这真正提供了什么好处?我的意思是,处理程序甚至可以是一个函数本身,不一定是命名空间。命名空间的理由是什么?
您是否有一组相似的响应处理功能?您是否正在尝试构建一个收到响应和相关函数的存储,以响应响应?您是否担心需要命名空间才能解决的某种冲突解决方案?等等
<小时/> 更好的方法:考虑私有范围的闭包。
var RequestProcessors = (function() {
var thisIsPrivate = "Ok",
thisIsPrivateToo = "Fine";
return {
processorOne: function(resp, arg) { /* logic here */ },
processorTwo: function(resp, arg) { /* logic here */ }
}
})();