私は JavaScript が初めてで、私の質問はまったくばかげているかもしれません。このための正しい参照を取得できません。
JavaScript でコントローラ オブジェクトを記述しようとしています。ここでのアイデアは、これを誰もがそのプロトタイプから継承し、存在するメソッドをオーバーライドできるインターフェイス オブジェクトにすることです。
1 つのメソッド「process()」をオブジェクトに公開したいだけで、このメソッドは残りのすべてのメソッドと属性を呼び出します。クロージャーを使用して他のすべてのメソッドと属性をプライベートにすることで、これを達成しようとしています。これは私のコードのサンプルスニペットです
var ViewController = function() {
var _viewName = null;
var loadView = function(viewName) {
console.log("now loading view : "+viewName+ " ...");
};
return {
process : function(viewName){
_viewName = viewName;
loadView(_viewName);
}
};
};
var vController = ViewController();
vController.process("alphaView");
これで問題なく動作します。しかし、プロトタイプを使用してメソッド PreProcess、loadView、initView、および PostProcess をオーバーライドしたい場合、それは機能します。Object.create のようにオーバーライドしてみました
var vController2 = Object.create(ViewController, {
LoadView : function(viewName) {
//some custom implementation
},
//and so forth
});
また、プロトタイプを使用して外部でメソッドを定義するように実装を変更しても機能しません。お気に入り
var ViewController = function() {
var _viewName = null;
return {
process : function(viewName){
_viewName = viewName;
loadView(_viewName);
}
};
};
ViewController.prototype.loadView = function(viewName) {
console.log("now loading view : "+viewName+ " ...");
};
私の問題の要点は、(a) ユーザーが 1 つの基本的なメソッド (LoadView) をオーバーライドできるコントローラーのインターフェイス オブジェクト、(b) これらのメンバーはすべてコントローラー オブジェクトに対してプライベートであり、「 Process()」メソッド
お知らせ下さい!
編集:コードを編集して簡単にしました。