我一直在关注 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
我看到安圭拉使用._isEnabled
现有功能(在代码中许多地方的 Chrome 控制台中)。例如,WhereUsed
有:
Tridion.Cme.Commands.WhereUsed.prototype._isAvailable =
function WhereUsed$_isAvailable(selection) ...
私人功能?
我熟悉前面的下划线是私有变量的命名约定。_isEnabled 和其他以下划线开头的函数是“私有的”吗?如果是这样,那么
- 我们应该如何扩展(向现有代码添加附加功能)这些功能?
- 我们应该如何替换(不运行现有代码,而是让我们的代码像“覆盖”一样运行)这些?
我假设相同的方法适用于以下划线开头的其他函数,例如_isAvailable
, 和_invoke
.