Tôi đang làm việc với API RESTful và mã Javascript của tôi đang thực hiện truy vấn REST thông qua cuộc gọi $ .ajax() của jQuery.Khai báo hằng số nguyên mẫu Javascript
tôi đã thực hiện một lớp Nghỉ ngơi javascript, mà tôi sẽ hiển thị bên dưới (rất đơn giản):
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");
}
}
});
};
Mã này hoạt động như dự định, tuy nhiên tôi đã quyết định thêm một số hằng số để giúp làm đẹp mã và nâng cao dễ đọc. Tôi có ví dụ một số nơi trong mã của tôi, nơi tôi đang kiểm tra cho xhr.status == 200 hoặc xhr.status == 400 và như vậy.
tôi có thể khai báo các biến lớp học như Rest.prototype.STATUS_OK = 200;
Nhưng biến là có thể chỉnh sửa, và tôi không thể nghĩ ra cách để làm cho họ không thay đổi. Trong mã của tôi ví dụ tôi có thể làm một this.STATUS_OK = 123;
và điều này sẽ sửa đổi biến. Tôi đã chơi xung quanh với từ khóa const, không có may mắn.
tôi đã thấy điều này: Where to declare class constants?, nhưng không có nhiều trợ giúp.
Ai đó có thể chỉ cho tôi đúng hướng để làm cách nào để biến những trường này thành một hằng số thay vì một biến không?
Xin lưu ý rằng "trường" là * thuộc tính *, chứ không phải * biến *. Đối với các biến bạn chỉ đơn giản có thể sử dụng ['const' keyword] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) khi được hỗ trợ. Nhưng bạn sẽ địa phương phạm vi nó anyway :-) – Bergi