如何创建从父对象继承的对象?

时间:2016-12-31 09:59:38

标签: javascript

我有这个对象:

var A = {
  headers: {
    'a property' : 'a value'
  }
};

我如何创建这样的另一个对象?

我不想输入整个父对象?我的新对象应该包含父对象,所以当我console.log var A,B和C时,它应该产生不同的结果。

var B = {
  headers: {
    'a property' : 'a value',
    'b property' : 'b value'
  }
};

var C = {
  headers: {
    'a property' : 'a value',
    'b property' : 'b value'
  },
  other: {
    other2: {
      'other2 property' : 'other2 property'
    }
  }
};

3 个答案:

答案 0 :(得分:2)

您可以使用创建功能:

var B = Object.create(A);
B.headers['b property'] = 'b value';

var C = Object.create(B);
C.others = {
    other2: {
      'other2 property' : 'other2 property'
    }
  }

答案 1 :(得分:0)

如果您的问题是使用B中已有的值扩展对象A,则可以使用javascript对象方法Object.assign执行以下操作:

var A = {
  headers: {
    'a property' : 'a value'
  }
};


var B = Object.assign(A);
B.headers['b property'] = 'b value';

这会将源对象的内容(A.headers)复制到B.headers,如下所示:

{
  headers: {
    'a property' : 'a value',
    'b property' : 'b value'
  }
};

答案 2 :(得分:0)

我总是在我的项目中使用Simple JavaScript Inheritance by John Resig。它是继承的简单而优雅的解决方案。

通过使用上述解决方案,您可以按如下方式定义类。您需要做的就是扩展课程。

var Person = Class.extend({
    init: function(isDancing) {
        this.dancing = isDancing;
    }
});

var Ninja = Person.extend({
    init: function() {
        this._super(false); // => Overrides the superior constructor
    }
});

var p = new Person(true);
p.dancing; // => true

var n = new Ninja();
n.dancing; // => false

它也很有用,因为所有类都将有一个init方法,因此您将知道在哪里引导事物,以及如何正确地覆盖事物。