Nếu bạn thực sự muốn ghi đè lên các nhà xây dựng, thông qua một tài sản constructor
-Backbone.Model.extend()
, ví dụ:
var Klass = Backbone.Model.extend({
constructor : function (attributes, options) {
// ...
}
});
Nếu bạn muốn gọi các nhà xây dựng built-in từ nhà xây dựng tùy chỉnh của bạn, bạn có thể làm điều gì đó như:
var Klass = Backbone.Model.extend({
constructor : function (attributes, options) {
Backbone.Model.apply(this, arguments);
}
});
Hoặc nếu bạn không muốn phải lặp lại tên của va riable chứa các lớp cha mẹ trên tất cả các lớp tiểu, hoặc bạn không muốn phải lo lắng về giá trị của biến mà thay đổi, bạn có thể làm điều gì đó như sau:
var Klass;
var parent_klass = Backbone.Model.prototype;
(function (parent_klass) {
Klass = parent_klass.constructor.extend({
constructor : function (attributes, options) {
parent_klass.constructor.apply(this, arguments);
}
});
})(parent_klass);
Hoặc nếu bạn thích cách @Claude suggests, nhưng lặp lại tên biến lớp con trong lớp con thay vì tên lớp cha var name:
var Klass = Backbone.Model.extend(
{
constructor : function (attributes, options) {
Klass.parent_klass.constructor.apply(this, arguments);
}
},
{
parent_klass : Backbone.Model.prototype
}
);
Nếu bạn muốn có thêm lời khuyên, bạn sẽ phải cụ thể hơn về những gì bạn muốn thực hiện.
Bất cứ điều gì bạn chỉ muốn thực hiện sau chức năng xây dựng sẵn, bạn có thể thực hiện trong initialize()
.
Bạn có thể chuyển đổi JSON của máy chủ khi cần bằng cách sử dụng 'phân tích cú pháp' (http://documentcloud.github.com/backbone/#Model-parse). Có lẽ bạn nên làm rõ những gì bạn đang cố gắng làm, một ví dụ có thể giúp đỡ. –