0

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

用户.js

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

    return function User(){

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

客户.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' 

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

4

1 回答 1

1

以下行将永远不会执行,因为您之前使用了 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;
});
于 2012-11-14T12:53:16.580 回答