【发布时间】:2012-08-09 19:17:39
【问题描述】:
我一直在关注 GUI 扩展,并注意到示例使用 _isEnabled 或 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
我看到 Anguilla 使用 ._isEnabled 来实现现有功能(在代码中许多地方的 Chrome 控制台中)。例如,WhereUsed 有:
Tridion.Cme.Commands.WhereUsed.prototype._isAvailable =
function WhereUsed$_isAvailable(selection) ...
私有函数?
我熟悉前面的下划线是私有变量的命名约定。 _isEnabled 和其他以下划线开头的函数是“私有的”吗?如果是的话,那么
- 我们应该如何扩展(向现有代码添加附加功能)这些功能?
- 我们应该如何替换(不让现有代码运行,而是让我们的代码像“覆盖”一样运行)这些?
我假设相同的方法适用于以下划线开头的其他函数,例如 _isAvailable 和 _invoke。
【问题讨论】:
标签: tridion tridion-2011