名前空間内でクラスタイプを定義したいのですが、「this」コマンドが名前空間の「this」ではなくクラスのインスタンスを参照するように、これを行う方法を考えることができません。
これを行う必要がある例を提供すると、より意味があります。代わりに、すべてのフォームをAjax経由で送信するように変換するJavaScriptコードを作成しています。その後、Ajaxリクエストが失敗した場合、一定期間後にフォームを再送信しようとします。ユーザーのインターネット接続が切断されてもページが機能するように考えています。
コード
// Add event handlers to capture form submit events here (code not shown)
// Use this object as a namespace
var AjaxStack_f = function () {}
// Use this as a struct/class for defining requests (This is what I don't like)
function Request(url, data, method) {
this.url = url;
this.data = data;
this.method = method;
}
// The stack of Requests
AjaxStack_f.prototype.stack = [];
// Push a Request on to the stack
AjaxStack_f.prototype.push = function(request){
this.stack.push(request);
}
// Provide instance
var AjaxStack = new AjaxStack_f();
上記を使用して、このコードでやりたいことができます
var request1 = new Request("www.example.com", { value: 1 }, "get");
var request2 = new Request("www.anotherurl.com", { value: 2 }, "get");
AjaxStack.push(request1);
AjaxStack.push(request2);
代わりにこのようなことを実行できるように、RequestクラスをAjaxStack名前空間内に配置するにはどうすればよいですか?
var request1 = new AjaxStack.Request("www.example.com", { value: 1 }, "get");
var request2 = new AjaxStack.Request("www.anotherurl.com", { value: 2 }, "get");
AjaxStack.push(request1);
AjaxStack.push(request2);