国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

深度剖析js數組

lordharrd / 786人閱讀

摘要:且原始數組不會被修改。語法從上面的例子可以看到其實是重新開了一個內存塊給新數組了,所以我們可以用來解決上面的問題在內存中開個新內存塊給,這樣就算你改了的內容,也不會變。

1、數組是引用類型

大家應該都知道數組和對象都是引用類型,如果一個數組賦值給另外一個數組只是將該數組的引用地址賦給另一個數組!比如:

    let a = [{
        id:1.
        name:"zhangwei",
        age:18
    }];
    
    let b = a;//這里將a的引用地址的指針指向了b,所以如果你想獲取b的內容,其實就是獲取a的內容,相當于給a開了一個副本

上面的代碼有一定的副作用:就是如果你改變了a的值那么b的值就會跟著變化,這也就是引用地址造成的,因為a和b指針指向的是同一個內存區域,如:

    a.name = "lilei"
    console.log(b.name)//這時候b.name 就是 "lilei"
2、斷開數組間的引用地址

像上面的 "副作用" 我們如何解決呢?因為我不想改變了a的同時讓b也變化!其實方法也有好多種,網上百度一下應該也能查到,這里我使用的是我目前使用的方法 array的slice()方法,按照MDN Array slice 上面的說明:

   slice() 方法返回一個從開始到結束(不包括結束)選擇的數組的一部分淺拷貝到一個新數組對象。且原始數組不會被修改。

語法Edit
arr.slice();
// [0, end]

arr.slice(begin);
// [begin, end]

arr.slice(begin, end);
// [begin, end)

var animals = ["ant", "bison", "camel", "duck", "elephant"];

console.log(animals.slice(2));
// expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]

從上面的例子可以看到slice其實是重新開了一個內存塊給新數組了,所以我們可以用來解決上面的問題:

let a = [{
        id:1.
        name:"zhangwei",
        age:18
    }];
let b = a.slice();//在內存中開個新內存塊給b,這樣就算你改了a的內容,b也不會變。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108058.html

相關文章

  • js對象詳解(JavaScript對象深度剖析深度理解js對象)

    摘要:對象詳解對象深度剖析,深度理解對象這算是醞釀很久的一篇文章了。用空構造函數設置類名每個對象都共享相同屬性每個對象共享一個方法版本,省內存。 js對象詳解(JavaScript對象深度剖析,深度理解js對象) 這算是醞釀很久的一篇文章了。 JavaScript作為一個基于對象(沒有類的概念)的語言,從入門到精通到放棄一直會被對象這個問題圍繞。 平時發的文章基本都是開發中遇到的問題和對...

    CatalpaFlat 評論0 收藏0
  • 深度剖析 redux applyMiddleware 中 compose 構建異步數據流的思路

    摘要:前言本文作者站在自己的角度深入淺出算了別這么裝逼分析在設計過程中通過構建異步數據流的思路。看上去那是相當的完美,根據咱們寫代碼的思路咱們來比對一下原版吧。時直接返回傳入函數函數。 前言 本文作者站在自己的角度深入淺出...算了別這么裝逼分析 redux applyMiddleware 在設計過程中通過 compose 構建異步數據流的思路。自己假設的一些場景幫助理解,希望大家在有異步數...

    tinylcy 評論0 收藏0
  • 針對vue wtach一次詳細的剖析

    摘要:提問深度與非深度的區別對象與數組與的區別的一個特點是,最初綁定的時候是不會執行的,要等到改變時才執行監聽計算。為一個對象,鍵是需要觀察的表達式,值是對應回調函數。值也可以是方法名,或者包含選項的對象適用場景一個數據影響多個數據。 提問 1.深度watch與非深度watch的區別;2.watch對象與數組;3.watch與computed的區別; immediate FullNa...

    crossoverJie 評論0 收藏0
  • 深度剖析憑什么python中整型不會溢出

    摘要:前言本次分析基于解釋器,版本在時代,整型有類型和長整型,長整型不存在溢出問題,即可以存放任意大小的整數。在后,統一使用了長整型。 前言 本次分析基于 CPython 解釋器,python3.x版本 在python2時代,整型有 int 類型和 long 長整型,長整型不存在溢出問題,即可以存放任意大小的整數。在python3后,統一使用了長整型。這也是吸引科研人員的一部分了,適合大數據...

    MSchumi 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<