我一直在关注 GUI 扩展并注意到示例使用其中之一_isEnabled
or isEnabled
,不带下划线。两者似乎都可以扩展或可能取代现有功能。
已启用
例如,PowerTools 基类(似乎没有“扩展”现有功能)具有:
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;
};
工具可以使用此基类并声明 .isValidSelection,例如:
PowerTools.Commands.CountItems.prototype.isValidSelection =
function (selection) { ... }
_已启用
我看到安圭拉使用._isEnabled
对于现有功能(在 Chrome 控制台的代码中的许多地方)。例如,WhereUsed
has:
Tridion.Cme.Commands.WhereUsed.prototype._isAvailable =
function WhereUsed$_isAvailable(selection) ...
私有函数?
我熟悉前面的下划线是私有变量的命名约定。 _isEnabled 和其他以下划线开头的函数是“私有的”吗?如果是这样,那么
- 我们应该怎样extend(向现有代码添加附加功能)这些功能?
- 我们应该怎样replace(不运行现有代码,而是运行我们的代码,就像“覆盖”一样)这些?
我假设相同的方法适用于以下划线开头的其他函数,例如_isAvailable
, and _invoke
.