gpt4 book ai didi

backbone.js - 创建主干插件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:02 24 4
gpt4 key购买 nike

尝试创建一个从 Backbone.Model “继承”但覆盖 sync 方法的 Backbone “插件”。

这是我目前所拥有的:

Backbone.New_Plugin = {};
Backbone.New_Plugin.Model = Object.create(Backbone.Model);
Backbone.New_Plugin.Model.sync = function(method, model, options){
alert('Body of sync method');
}

方法:Object.create() 直接取自Javascript: The Good Parts一书:

Object.create = function(o){
var F = function(){};
F.prototype = o;
return new F();
};

我在尝试使用新模型时遇到错误:

var NewModel = Backbone.New_Plugin.Model.extend({});
// Error occurs inside backbone when this line is executed attempting to create a
// 'Model' instance using the new plugin:
var newModelInstance = new NewModel({_pk: 'primary_key'});

错误出现在Backbone 0.9.2开发版的1392行。在函数 inherits() 中:

    Uncaught TypeError: Function.prototype.toString is not generic .

我正在尝试以 Backbone 库 Marionette 创建新版本 View 的方式创建一个新插件。看来我误解了应该这样做的方式。

为 backbone 创建新插件的好方法是什么?

最佳答案

您扩展 Backbone.Model 的方式并不是您想要的方式。如果你想创建一个新类型的模型,只需使用extend:

Backbone.New_Plugin.Model = Backbone.Model.extend({
sync: function(method, model, options){
alert('Body of sync method');
}
});

var newModel = Backbone.New_Plugin.Model.extend({
// custom properties here
});

var newModelInstance = new newModel({_pk: 'primary_key'});

另一方面,Crockford 的 Object.create polyfill 被认为是过时的,因为(我相信)最近的 Object.create 实现采用了不止一个参数。此外,您正在使用的特定函数不会遵从 native Object.create 函数,如果它存在的话,尽管您可能只是省略了 if (typeof Object.create != = 'function') 应该包装该函数的语句。

关于backbone.js - 创建主干插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009739/

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