javascript - Clone object's properties by reference -
my data object:
var data = { foo: { bar: 42 }, baz: true, x: 1, y: 2 };
now i'd like send object json string. but before sending, i'd modify object and still keeping original one.
var json = data; json.foo = json.foo.bar; json.id = json.baz; delete json.baz;
of course modify data
object, too.
is possible create second object same structure first one, allows rename / delete properties without changing first object?
i know this:
var json = { foo: data.foo.bar, id: data.baz, x: data.x, y: data.y };
but imagine data
object contains 50 properties , want change 2 of them.
and don't want use jquery.copy
or angular.copy
because of performance reasons (they create real copies - shouldn't necessary).
maybe there's ?
var json = { foo: data.foo.bar, id: data.baz }; json = merge(json, data); delete json.baz;
thank you! :)
you can use angular.extend()
or jquery.extend()
copy original object's own properties. i.e. shallow copy
var json = angular.extend({}, data); json.foo = data.foo.bar; json.id = data.baz; delete json.baz;
or
var json = angular.extend({}, data, { foo: data.foo.bar, id: data.baz }); delete json.baz;
note following won't work because data
's foo
overwrite first argument object's foo
.
var json = angular.extend({ foo: data.foo.bar, id: data.baz }, data); delete json.baz;
Comments
Post a Comment