title: Best way to clone observables?
body: <p>What is the best way to clone Observable objects in Knockout to make kind of transactions mechanism?<br/><br/>
  For example editing this model:<br/></p>
  
  <pre><code>var Action = function (name, ownerType, condition, expression, args) {
      var self = this;
      this.name = ko.observable(name);
      this.ownerType = ko.observable(ownerType);
      this.condition = ko.observable(condition);
      this.expression = ko.observable(expression);
      this.args = ko.observable(args);
  };
  </code></pre>
  
  <p>I want to save state of that object before user will edit it. And if user will cancel editing - rollback object state.<br/><br/>
  Simplest way is just create another project like:</p>
  
  <pre><code>self.tempAction = new Action(action.name(), action.ownerType(), action.condition(), action.expression(), action.args());
  </code></pre>
  
  <p>But I'm not sure that it is elegant solution..</p>
  
  <p>So, any ideas?</p>