我是 javascript 新手,我的问题可能非常愚蠢。我无法为此获得正确的参考。
我正在尝试用 javascript 编写一个控制器对象。这里的想法是使它成为一个接口对象,任何人都可以从它的原型继承并覆盖他们存在的方法。
我只想向对象公开一个方法“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)控制器的接口对象,用户可以在其中覆盖一个基本方法(LoadView,)(b)所有这些成员都是控制器对象私有的,并且可以通过“过程()”方法
请指教!
编辑:编辑代码以使其简单。