gpt4 book ai didi

javascript - Backbone.Model.extend 不创建实例属性

转载 作者:行者123 更新时间:2023-11-30 10:39:53 26 4
gpt4 key购买 nike

我是 Backbone 和 JS 的新手,如果我错了请纠正我...

使用来自 backbone.js 站点的示例,

var Note = Backbone.Model.extend({
initialize: function() { ... },
author: function() { ... },
coordinates: function() { ... },
allowedToEdit: function(account) {
return true;
}
});

Backbone.js 说,

"To create a Model class of your own, you extend Backbone.Model and provide instance properties, as >well as optional classProperties to be attached directly to the constructor function."

所以我创建了两个对象,

var n1 = new Note;
var n2 = new Note;

现在属性 autor、allowedToEdit 坐标等不是 n1 和 n2 的实例属性。它们是在 proto 链接下创建的。我如何在 backbone.js 中创建实例属性

此外,如果我尝试在对象中修改 javascript 中的继承属性,则继承属性不会更改。相反,在对象实例属性中创建一个具有相同名称的新属性。我如何实现这一点?提前致谢...

最佳答案

我相信您对 extend 的作用有点困惑。扩展类似于继承。如果您以这种方式扩展 Model,您将创建一个名为 Note 的派生“类”,它现在具有这些成员函数。

但这不是你想要的,我不认为。您想要一个具有这些数据属性的模型。向实例添加数据很简单:

var Note = Backbone.Model.extend({});
var n1 = new Note({
author: "Gautham",
coordinates: {x: 200, y: 100},
allowedToEdit: true
});

var author = n1.get("author");

换句话说,Backbone 模型上的数据属性是动态的。您不需要在您的 Note 推导中声明它们。

但是,如果您希望 Note 派生具有这样的属性,您始终可以将它们定义为通过 get 函数代理:

var Note = Backbone.Model.extend({
author: function() { return this.get('author'); },
coordinates: function() { return this.get('coordinates'); }
allowedToEdit: function() { return this.get('allowedToEdit'); }
});
var n1 = new Note({...});
var author = n1.author();

关于javascript - Backbone.Model.extend 不创建实例属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11683683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com