私はjavascriptでクラスを次のように定義しています
Class = (function() {
var privateFunction = function() { return "private"; }
return { publicFunction: function() { return privateFunction("public"); } };
)();
ここで、ユーザーはClass.publicFunctionにアクセスできますが、 Class.privateFunctionにはアクセスできません。
ここで、このクラスを拡張するためのインターフェースをユーザーに提供したいと思います。そこで、パブリック関数extendを追加しました。
Class = (function() {
var privateFunction = function() { return "private"; }
return {
publicFunction: function() { return privateFunction("public"); }
extend: function(source) {
dest=this;
for(var prop in source)dest[prop] = source[prop]
}
};
)();
私の目的は、extend属性を次のように使用することでした
Class.extend({
someFunc: function() { return privateFunction("hooray"); }
});
としてアクセスします
Class.someFunc()
私が直面している問題は、拡張関数someFuncでのprivateFunction()の呼び出しが利用できないことです。それがスコープの問題であることは理解できますが、とにかく私のニーズを解決することはできますか。