通常、私はmyFunc.apply
とmyFunc.eval
をお勧めします。それは私がjavascriptの "基本クラスに関して"と解釈するものです。
あなたのタイトルに基づいて、あなたは "ベースクラスのスコープ内"と言います。私があなたがクロージャーについて話していて、外部関数の変数を参照できると仮定しているのなら、これは不可能です。おそらく、eval-styleというリクエストを渡すことができるクロージャーにエントリーポイントを置くことを除いて...それで、this._private.C
のようなオブジェクトを持っているかもしれません。
あなたは物事を "プライベート"にしようとしているのなら、それは本当にjavascriptでそうするのは価値がありません。
モチベーションがthis.C = function(){...}
で、this.C()
と表示されている場合は、より明確な回答をすることができます。
「それを公開し、本質的に/ Cは、インスタンス上で呼び出すことができるようになる。ヘルパーメソッドことになっているので、それを露出するために理由はありません。私はあなたが私の主な不満は、そのヘルパーであると言うことができると思いますメソッドはサブクラスによって継承できません。 "--OP
この場合、実際にはプライベートではありません。しかし、あなたができることは、それが所属するヘルパーメソッドを定義することです:適切には外側のスコープ内にあります。 =)例:
(function(){
var C = function() {
alert('I am C');
}
base = function() {
this.A = function() {
this.B();
}
}
sub = function() {
this.B = function() {
C();
}
}
})();
sub.prototype = new base();
(new sub()).A();
http://jsfiddle.net/alnitak/DaSEN/を参照してください? – ninjagecko
これは、Cがインスタンス上で呼び出されることを可能にするか、本質的にそれを公開することを可能にします。それがヘルパーメソッドであるはずだから、公開される理由はありません。私の主な不満は、ヘルパーメソッドがサブクラスによって継承できないということです。 –