JavaScript 言語は、クラスまたはクラスベースの継承を直接サポートしていません。
ただし、JavaScript には多数のクラスの実装があります。
私が見たすべての実装では、自己呼び出し関数を使用して、プライベートでインスタンスベースの効率的な関数を作成する必要があります。
関数にはプライバシーがあります
var foo = function(){ /* private to foo here */ };
しかし、それを元にプロトタイプを作成すると、公開されたインスタンス ベースの効率的なメンバーが作成されます。
foo.prototype.func = function(){ /* private to func */ }; // foo.func in public now.
このようにfooに関数を配置すると
var foo = function() {
var funcInner = function(){};
}; // funcInner is now re-defined in each call to foo. In-efficient.
欠けているプライバシーを手に入れることができますが、非効率性があります。
したがって、プライベートでインスタンスベースの効率的な関数を持つ唯一の方法は、モジュール パターン (または同様の自己呼び出しパターン) をそのまま使用することです。
var NS = (function(){
var private = function(){ /* code */ }; // only created once b.c. in module pattern.
var publik = {};
publik.funcPublic = function(){ /* code */ };
return publik;
})();
通話中
NS.funcPublic();
このことから、プライベートなインスタンス ベースの効率的な関数を使用するには、わずかな実行時間が必要になると思われますか?
これは正しいです?