私は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) { ... }
_有効になっています
Anguillaが._isEnabled
既存の機能を使用しているのがわかります(Chromeのコンソールのコード内のさまざまな場所にあります)。たとえば、次のようにWhereUsed
なります。
Tridion.Cme.Commands.WhereUsed.prototype._isAvailable =
function WhereUsed$_isAvailable(selection) ...
プライベート機能?
私は、前のアンダースコアがプライベート変数の命名規則であることをよく知っています。アンダースコアで始まる_isEnabledおよびその他の関数は「プライベート」ですか?もしそうなら、
- これらの関数をどのように拡張(既存のコードに追加機能を追加)する必要がありますか?
- これらをどのように置き換える必要がありますか(既存のコードは実行されませんが、代わりに「オーバーライド」のように実行されます)。
同じアプローチが、、、などのアンダースコアで始まる他の関数にも当てはまると思い_isAvailable
ます_invoke
。