Tôi đã làm theo các tiện ích mở rộng GUI và các ví dụ thông báo sử dụng _isEnabled
hoặc isEnabled
mà không có dấu gạch dưới. Cả hai dường như làm việc để mở rộng hoặc có thể thay thế chức năng hiện có.Sự khác nhau giữa _isEnabled và isEnabled trong Anguilla là gì?
isEnabled
Ví dụ, lớp PowerTools cơ sở (mà dường như không "mở rộng" chức năng hiện có) có:
PowerTools.BaseCommand.prototype.isEnabled = function(selection, pipeline)
{
var p = this.properties;
if (!p.initialized)
{
this.initialize();
}
if (!this.isToolConfigured())
{
return false;
}
if (this.isValidSelection)
{
return this.isValidSelection(selection, pipeline);
}
return true;
};
Một công cụ có thể sử dụng lớp cơ sở này và tuyên bố. isValidSelection, ví dụ:
PowerTools.Commands.CountItems.prototype.isValidSelection =
function (selection) { ... }
_isEnabled
01.Tôi thấy Anguilla sử dụng ._isEnabled
cho chức năng hiện có (trong bảng điều khiển của Chrome ở nhiều nơi trong mã). Ví dụ: WhereUsed
có:
Tridion.Cme.Commands.WhereUsed.prototype._isAvailable =
function WhereUsed$_isAvailable(selection) ...
Các chức năng riêng tư?
Tôi đã quen thuộc với dấu gạch dưới trước là quy ước đặt tên cho các biến riêng tư. Các hàm _isEnabled và các hàm khác có bắt đầu bằng dấu gạch dưới "riêng tư không?" Nếu vậy, thì
- Làm thế nào nên chúng tôi mở rộng (thêm chức năng bổ sung để mã hiện) các chức năng này?
- Làm cách nào để chúng tôi thay thế (không có mã hiện tại chạy, nhưng thay vào đó chúng tôi chạy mã thay vì "ghi đè")?
Tôi giả sử cùng một phương pháp áp dụng cho các chức năng khác bắt đầu bằng dấu gạch dưới như _isAvailable
và _invoke
.
Điểm tốt trên PowerTools 'isValidSelection. Để quản lý đường ống, chúng ta có đặt nó thành true/false không? Tôi thấy 'pipeline.stop = true;' trong nguồn .js. –
pipeline.stop = true; thực sự có nghĩa là nó không nên tiếp tục các phần mở rộng khác hoặc các phương thức gạch dưới. Sắp xếp "Tôi biết rõ nhất, hãy ngừng tìm câu trả lời khác" –