Javascript 使用其子模型初始化主干模型

Javascript 使用其子模型初始化主干模型,javascript,backbone.js,Javascript,Backbone.js,我有以下骨干模型 var Parent = Backbone.Model.extend({ defaults: { id: '', name: '' } }); var Child = Parent.extend({ defaults: { color: '', shape: '', isValid: false }); 现在我有了以下对象“Child”模型 我需要使用此“子”模型对象创建

我有以下骨干模型

var Parent = Backbone.Model.extend({
    defaults: {
        id: '',
        name: ''
    }
});

var Child = Parent.extend({
    defaults: {
        color: '',
        shape: '',
        isValid: false
});
现在我有了以下对象“Child”模型

我需要使用此“子”模型对象创建一个“父”模型对象,为此我执行了以下操作:

var json = convertToJSON(child);
var parent = new Parent(json);

但这里“子”模型的属性也被填充到“父”模型的父对象中。有没有办法在这个新对象中只填充那些适用于“父”模型的属性?我不想使用“删除”来删除不适用的属性。

您可以在子模型上使用
pick
方法来仅获取所需的属性

var json = child.pick('color', 'shape');
var parent = new Parent(json);
它将返回一个可以传递给父模型的对象。 你可以阅读更多关于它的内容

或者,您可以使用,但您将需要它的transpiler

const {color, shape} = child;
const parent = new Parent({color, shape});
  • 您可以使用,代理到您的子对象上,以拾取特定属性
  • 您可以提取
    Parent.defaults
    的键来确定您需要什么
  • 这意味着:

    var parent = new Parent(
        child.pick(_.keys(Parent.prototype.defaults))
    );
    
    还有一个演示

    var parent = new Parent(
        child.pick(_.keys(Parent.prototype.defaults))
    );