扩展,但对于对象而不是类

时间:2015-02-16 07:17:38

标签: javascript

在软件中,我们通常使用'extends'这个词来指代超类的子类,但是当系统地'扩展'对象的属性而不是类时,是否有好的术语?

例如,在JavaScript中,如果我有这样的对象:

var foo = {

property1:'',
property2:''

}

然后我有:

var bar = {

property3:''

}

如果我将bar的属性添加到foo的属性,这就是我的意思。

2 个答案:

答案 0 :(得分:1)

无论出于何种原因,已采用术语extend将一个对象中的属性添加到另一个对象中。 jQuery这样做,但它可能不是第一个。 Underscore使用相同的术语:

_.extend(myObj, {newProp1: 1})
$.extend(myObj, {newProp1: 1})
另一方面,Ember在子类化意义上使用extend,添加属性的API为Ember.merge

ES6版本称为assign

Object.assign(myObj, {newProp1: 1})

没有标准的术语,也没有标准的方法来区分扩展对象与新属性的概念,并在子类化的意义上扩展一个类。

答案 1 :(得分:1)

您可以称之为合并或扩展。你可以扩展"另一个具有如下函数的对象:

function merge(obj1, obj2) {
    for(var key in obj2) {
        obj1[key] = obj2[key];
    }
}

PS。 Prototypal继承是你的朋友。