[removed] Store Object as Fixed Value?

后端 未结 3 513
清歌不尽
清歌不尽 2021-01-20 18:51

I\'ve noticed this behavior when writing my JavaScript, and I haven\'t been able to figure out why:

Below is some code to reproduce the behavior in question.

相关标签:
3条回答
  • 2021-01-20 18:56

    Because you are setting the objects to the same reference point. You need to clone the object. here is a piece of code from http://www.thespanner.co.uk/2008/04/10/javascript-cloning-objects/ that allows for cloning of objects with prototyping.

    Object.prototype.clone = function() {
      return eval(uneval(this));
    }
    alert("test".clone());
    alert((3).clone());
    alert(clone.clone());
    
    0 讨论(0)
  • 2021-01-20 19:03

    Because both variables reference the same object. Objects are not cloned/copied on variable assignment. You would have to do this yourself.

    JavaScript behaves the same way like any (most) other OO languages in this case.

    0 讨论(0)
  • 2021-01-20 19:08

    By writing var o2 = o1; you're making o1 and o2 two references to the same object. What you want to do is to clone the o1 object and to store the cloned copy in o2. Search for cloning objects in JavaScript.

    0 讨论(0)
提交回复
热议问题