Knockout.js 用requirejs定义的模型继承

Knockout.js 用requirejs定义的模型继承,knockout.js,requirejs,Knockout.js,Requirejs,我有一个wep应用程序,它同时使用knockout.js和require.js库。假设我有一个“用户”模型和一个“客户”模型。我希望客户模型从用户继承,因此我现在有以下代码: var c = new Customer(); c.id(1); c.firstname("John"); c.name("Doe"); c.address("Unknown"); User.js define(['knockout'], function(ko){ return function User()

我有一个wep应用程序,它同时使用knockout.js和require.js库。假设我有一个“用户”模型和一个“客户”模型。我希望客户模型从用户继承,因此我现在有以下代码:

var c = new Customer();
c.id(1);
c.firstname("John");
c.name("Doe");
c.address("Unknown");
User.js

define(['knockout'], function(ko){

    return function User(){

        var self = this;
        self.id = ko.observable();
        self.firstname = ko.observable();
        self.name = ko.observable();
    };
});
Customer.js

define(['knockout', 'model/user'], function(ko, User){

    return function Customer(){

        var self = this;
        self.address = ko.observable();
    };
    Customer.prototype = new User();
});
使用以下代码创建客户时:

var c = new Customer();
c.id(1);
c.firstname("John");
c.name("Doe");
c.address("Unknown");
然后在Chrome控制台中出现以下错误:

Uncaught TypeError: Object #<Customer> has no method 'id' 
uncaughttypeerror:对象#没有方法“id”

当我只设置address属性时,我没有看到这个错误,所以我假设继承有问题。非常欢迎提供任何帮助。

以下行将永远不会执行,因为您在之前使用了return:

Customer.prototype = new User();
customer.js
更新为:

define(['knockout', 'model/user'], function(ko, User){

    function Customer (){

        var self = this;
        self.address = ko.observable();
    };
    Customer.prototype = new User();
    return Customer;
});

@布拉姆。这可能不是一个完美的解决方案。检查这个问题:@nemesv为什么这个解决方案对我的情况更好?