gpt4 book ai didi

javascript - Backbone 模型创建 |概念理解

转载 作者:行者123 更新时间:2023-11-28 20:50:11 26 4
gpt4 key购买 nike

谁能解释一下如何在 Backbone 中创建模型?您传入一个对象,但可以像使用函数对象一样使用 new。

这让我相信 Backbone 以某种方式将对象文字附加到函数对象,因为你不能这样做 new {key1:value1, key2,value2}

来自 Backbone 的示例

var Sidebar = Backbone.Model.extend({
promptColor: function() {
var cssColor = prompt("Please enter a CSS color:");
this.set({color: cssColor});
}
});

window.sidebar = new Sidebar;

sidebar.on('change:color', function(model, color) {
$('#sidebar').css({background: color});
});

sidebar.set({color: 'white'});

sidebar.promptColor();

最佳答案

这与 JavaScript 中对象系统的工作方式以及 constructor 的概念有关。对于一个对象和 new keyword .

如果您定义一个具有某些属性的对象:

var myobj = {
foo: 'bar'
}

然后尝试执行 new myobj ,您会收到一条错误消息,指出 myobj 不是函数。

但是,假设我们定义了一个函数,将一些传入的值设置为 this 属性:

var myobj = function(foo){
this.foo = foo || "bar";
}

让我们尝试创建一个新的实例:

var m = new myobj()
m.foo
> bar
var m2 = new myobj('baz');
m2.foo
> baz

这是可行的,因为 JavaScript 中的函数只是函数类型的对象:

typeof myobj
> "function"
typeof myobj.prototype
> "object"

现在,如果您查看Backbone source (特别是第 184 行)你会看到:

 var Model = Backbone.Model = function(attributes, options) {

这句话是说模型实际上是一个可以接受两个参数的函数,属性选项

这允许您创建此内容的副本。

关于javascript - Backbone 模型创建 |概念理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12630025/

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