带有knockout.js函数覆盖的Javascript

带有knockout.js函数覆盖的Javascript,javascript,inheritance,knockout.js,Javascript,Inheritance,Knockout.js,我有一个基本viewmodel,如下所示: var myApp = myApp || {}; myApp.BaseViewModel = function () { self = this; self.var1 = ko.observable(); self.messageToSay = Function() { alert("in Base view model"); }; self.sayMessage = function() {

我有一个基本viewmodel,如下所示:

var myApp = myApp || {};

myApp.BaseViewModel = function () {
    self = this;
    self.var1 = ko.observable();
    self.messageToSay = Function() {
        alert("in Base view model");
    };
    self.sayMessage = function() {
        self.messageToSay();
    }
};
var myApp = myApp || {};

myApp.HomeViewModel = function() {

   var self = this;
   ko.utils.extend(self. new myApp.BaseviewModel());

   self.messageToSay = Function() {
        alert("in Home view model");
    };

};

var vm = new myApp.HomeViewModel();
ko.applyBindings(vm, vm);
我有一个从BaseViewModel继承的viewmodel,如下所示:

var myApp = myApp || {};

myApp.BaseViewModel = function () {
    self = this;
    self.var1 = ko.observable();
    self.messageToSay = Function() {
        alert("in Base view model");
    };
    self.sayMessage = function() {
        self.messageToSay();
    }
};
var myApp = myApp || {};

myApp.HomeViewModel = function() {

   var self = this;
   ko.utils.extend(self. new myApp.BaseviewModel());

   self.messageToSay = Function() {
        alert("in Home view model");
    };

};

var vm = new myApp.HomeViewModel();
ko.applyBindings(vm, vm);
问题是,当我执行vm.sayMessage()时,它总是返回“在基本视图模型中”,而不是“在主视图模型中”。如何使HomeViewModel中的messageToSay()方法覆盖BaseViewModel()中的方法

谢谢
Martin

这是执行继承的方式:

myApp.HomeViewModel = function() {

   var self = this;
   myApp.BaseviewModel.apply(self, [/*BaseViewModel constructor args */]);

   self.messageToSay = function() {
        alert("in Home view model");
    };

};

我希望有帮助