使用Javascript分配对象:浅层还是深层复制?

这个问题在这里已经有了答案:

  • Javascript的参考与价值[复制] 4个答案

  • 正如评论中所暗示的,JavaScript完全依赖于引用,唯一的例外是原始值保存在堆栈中,因此程序不需要引用来访问它们。 在你的例子中,所有的变量声明都会创建新的值 - 每一个都是一个数组的实例 - 但是声明一个数组返回的内容是一个引用,而不是数组本身。 例如, [1, 2]是一个值(整数)数组,但[a, b]是一个引用数组。

    所以...... 没有东西被复制 。 我们可以通过将对象放置为数组的元素并检查先前分配的属性仍然可以通过新的“父”数组来访问,从而证明这一点。

    (在评论中回答你的问题,是的,你的例子比你(或JavaScript)复制值更高效)。

    'use strict';
    
    const arrayOne = [];
    
    arrayOne.someProperty = "This string is a property of `arrayOne`, " +
                            "accessed via the reference to it in `arrayTwo`."
    
    const arrayTwo = [arrayOne];
    
    span.innerHTML = arrayTwo[0].someProperty;
    <span id="span"></span>
    链接地址: http://www.djcxy.com/p/20979.html

    上一篇: Assigning objects in Javascript: shallow or deep copy?

    下一篇: JavaScript function arguments store by reference