merge1.6 modified
merge(object) -> newHash
将 object
和当前的 hash 实例合并,返回合并后的结果。在 v1.6.0 之前:
这是一个破坏性的方法(对象的值将会被增加到当前 hash 中)。从 v1.6.0 开始:
这不再是一个破坏性的方法(在合并之前,hash 已被克隆)。
如果存在相同的“键”,原 hash 中该键对应的值会被参数 object
中的值覆盖。
这经常被用于选择性的修改一些指定“键”的值(例如:在一系列的选项上应用一些级别控制)。
参数 object
可以是一个 Hash
或者是一个普通的 Object
。
样例
从 1.6.0 开始,Hash#merge
返回一个新的 hash:
var h = $H({ name: 'Prototype', version: 1.5 });
h.merge({version: 1.6, author: 'Sam' }).inspect();
// -> #<Hash:{'name': 'Prototype', 'version': 1.6, 'author': 'Sam'}>
h.inspect();
// -> #<Hash:{'name': 'Prototype', 'version': 1.5}>
在 1.6.0 之前,Hash#merge
会破坏原有的 hash:
var h = $H({ name: 'Prototype', version: 1.5 });
h.merge({version: 1.6, author: 'Sam' }).inspect();
// -> #<Hash:{'name': 'Prototype', 'version': 1.6, 'author': 'Sam'}>
h.inspect();
// -> #<Hash:{'name': 'Prototype', 'version': 1.6, 'author': 'Sam'}>
参见
在 1.6.0 及以上的版本中,如果你需要一个 破坏性 的合并操作,请使用 Hash#update。