Comments (8)
Thanks for bringing this up!
Unfortunately, there would be a significant performance cost to enabling this; merge
would have to keep track of whether any modifications had been made, and inspect every current value before merging along the way.
I don't think the performance overhead is worth making this work.
from seamless-immutable.
This is a little wierd because u see —
var obj = Immutable({
a: {aa: 1},
b: {bb: 2}
})
var obj2 = obj.merge({b: {bb: 2}}, {deep: true})
console.log(obj.b === obj2.b, obj.a === obj2.a) // actually returns true for both cases.
So you are doing a check here right? I can get the same behavior by just wrapping the whole object inside another temp object.
from seamless-immutable.
Hm, sure enough! It looks like we're already doing this and incurring the performance cost, so I guess it's empirically not a performance problem. 😆 My bad!
I'll look into this.
from seamless-immutable.
Fixed and published as 4.0.2. Thanks for reporting this @tusharmath, and sorry I didn't look far enough into it the first time around!
from seamless-immutable.
@rtfeldman No need for sorry. Thanks a ton for fixing it so quickly.
from seamless-immutable.
Looks like this is still happening for objects with nested arrays. For example:
var a = Immutable({foo: []})
var b = Immutable({foo: []})
var ab = a.merge(b, {deep: true})
ab === a // => false
Without a nested array it works as expected:
var a = Immutable({foo: {}})
var b = Immutable({foo: {}})
var ab = a.merge(b, {deep: true})
ab === a // => true
from seamless-immutable.
@zuk can you open a separate issue for that?
from seamless-immutable.
Sure, opened it as #94
from seamless-immutable.
Related Issues (20)
- Make `without` support removing item from an array HOT 4
- how to use splice like array HOT 1
- Internet Explorer tests are failing HOT 4
- Issue regarding null values HOT 5
- Why are IE tests failing? HOT 3
- How to apply splice with seamless-immutable? HOT 1
- Merge does not work with class instances
- __immutable_invariants_hold is enumerable on Edge HOT 1
- Garbage collector features? HOT 1
- Performance characteristics
- Any difference with deepCopy? HOT 1
- [types] Mixin not applied to nested objects HOT 1
- flatMap not working HOT 2
- Add documentation for merge mode
- Files not being replaced on a deep merge
- Fails on IE 11 HOT 1
- TypeError: Object(...) is not a function HOT 1
- Lodash Vulnerability Problem
- Is the project still maintained? HOT 2
- immutable object causes rapid memory growth HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from seamless-immutable.