Javascript 是否有一个纯函数等价于goog.object.extend?

Javascript 是否有一个纯函数等价于goog.object.extend?,javascript,functional-programming,google-closure-library,Javascript,Functional Programming,Google Closure Library,Per: 用另一个对象扩展一个对象。这是“就地”操作;它不会创建新对象。示例:var o={};extend(o,{a:0,b:1});o、 //{a:0,b:1}goog.object.extend(o,{b:2,c:3});o、 //{a:0,b:2,c:3} 但这不是一种功能性方法,在许多情况下,功能性方法更好。闭包是否提供了更现代的东西 e、 g 变成 a = goog.object.extend(a, b); 您可以自己实现它: var a={}; var b=extend(a,{

Per:

用另一个对象扩展一个对象。这是“就地”操作;它不会创建新对象。示例:var o={};extend(o,{a:0,b:1});o、 //{a:0,b:1}goog.object.extend(o,{b:2,c:3});o、 //{a:0,b:2,c:3}

但这不是一种功能性方法,在许多情况下,功能性方法更好。闭包是否提供了更现代的东西

e、 g

变成

a = goog.object.extend(a, b);

您可以自己实现它:

var a={};
var b=extend(a,{a:0,b:1});
var c=extend(b,{b:2,c:3});
控制台日志(a、b、c);
功能扩展(a,b){
var result={};
如果(a.hasOwnProperty(x))结果[x]=a[x];
如果(b.hasOwnProperty(x))结果[x]=b[x];
返回结果;

}
您可以使用空对象文字来创建新对象,该文字将与要复制和合并的对象一起扩展:

var x = {};
goog.object.extend(x, a, b);
a = x;

如果要扩展非普通对象,可能需要使用
Object.create(Object.getPrototypeOf(a))

您想要编写的代码是什么样子的?这似乎不正确:
goog.Object.extend()
不返回第一个参数(正如
jQuery.extend
所做的那样。@Peeja:Hm,奇怪,这个改变了吗?我一定认为它会起作用。我不确定,我只是尝试了一下。我认为它也会起作用。
var x = {};
goog.object.extend(x, a, b);
a = x;