私はRESTfulなAPIを使用しています。私のJavascriptコードはjQueryの$ .ajax()呼び出しによってRESTクエリを作成しています。私は以下が表示されますjavascriptの休憩クラス、(大幅に簡略化)を実施しているJavascriptプロトタイプ定数宣言
:意図したとおりに
var Rest = function (baseUrlPath, errorMessageHandler) {
...
};
// Declare HTTP response codes as constants
Rest.prototype.STATUS_OK = 200;
Rest.prototype.STATUS_BAD_REQUEST = 400;
... // other rest methods
Rest.prototype.post = function (params) {
$.ajax({
type: 'POST',
url: params.url,
data: params.data,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
beforeSend: this._authorize,
success: params.success,
error: params.error || this._getAjaxErrorHandler(params.errorMessage)
});
};
... // more rest methods
Rest.prototype.executeScenario = function (scenarioRef) {
var self = this;
this.post({
url: 'myurlgoeshere',
data: 'mydatagoeshere',
success: function (data, textStatus, xhr) {
if (xhr.status == 200) {
console.log("everything went ok");
}
},
error: function (xhr, textStatus, errorMsg) {
// TODO: constants
if (404 == xhr.status) {
self.errorMessageHandler("The scenario does not exist or is not currently queued");
} else if (403 == xhr.status) {
self.errorMessageHandler("You are not allowed to execute scenario: " + scenarioRef.displayName);
} else if(423 == xhr.status) {
self.errorMessageHandler("Scenario: " + scenarioRef.displayName + " is already in the queue");
}
}
});
};
コードが動作する、しかし私は、コードを美化し、改善するためのいくつかの定数を追加することを決定しました可読性。私はxhr.status == 200やxhr.status == 400などをチェックしているコードにいくつかの場所を持っています。
私はRest.prototype.STATUS_OK = 200;
としてクラス変数を宣言することができますが、変数が編集可能である、と私はそれらを一定にする方法を考えることはできません。例えば私のコードではthis.STATUS_OK = 123;
を実行することができ、これにより変数が変更されます。 constキーワードで遊んだことがあります。
私はこれを見ました:Where to declare class constants?、それほど役に立たなかったです。
変数の代わりにこれらのフィールドを定数のリテラルにする方法について、正しい方向で私を指摘できますか?
「フィールド」は*変数*ではなくプロパティ*であることに注意してください。変数の場合、サポートされているところでは、['const'キーワード](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const)を使うだけです。しかし、あなたはそれをとにかくローカルスコープにします:-) – Bergi