拷貝的概念和方法

#### 拷貝

深拷貝:對象在賦值的時候拷貝的是對象的值  相似於值傳遞;

淺拷貝:對象在賦值的時候拷貝的是對象的索引  相似引用傳遞;

值傳遞:賦值 var  a = 10;var b = a; b+=20; a=10;b=30;

引用傳遞:賦值地址一個改變地址內容改變;最終值同樣;

棧:基本數據類型

堆:存儲引用數據

淺:

​    2.Object.assign()參數1  目標值    參數2  3......須要合併的對象

​    3.擴展用算符 var   newArr = {...obj};

​    4.引入jQuery的前提下    $.extend    參數1  目標對象    參數2   合併對象

深:

```
    1.深度拷貝   $.extend  第一個值爲true是深拷貝
        var obj = {goods:{id:2};
        var newObj = $.extend(true,{},obj)
        newObj.goods.id = 100;
    2.JSON.stringify   JSON.parse不能拷貝函數var   newObj = JSON.parse(JSON.stringify(obj));
    3.手動封裝   遞歸
     function clone(Obj) {
        var newObj;   
        if (Obj instanceof Array) {
            newObj = [];  // 建立一個空的數組
            var i = Obj.length;
            while (i--) {
                newObj[i] = clone(Obj[i]);
            }
            return newObj;
        } else if (Obj instanceof Object){
            newObj = {};  // 建立一個空對象
            for (var k in Obj) {  // 爲這個對象添加新的屬性
                newObj[k] = clone(Obj[k]);
            }
            return newObj;
        }else{
            return Obj;
        }
    }
```

#### H5新增本地存儲 

#####     webStorage  : 

​        1.localStorage   :持久存儲 大小限制 5M  只能存儲字符串  沒有時間限制  沒有域的限制;

​            設置:localStorage  .name = "dd";

​                localStorage ["age"] = 3;

​                localStorage .setItem("key","value");自身帶有這個方法;

​            獲取:console.log(localStorage.getItem("key"))

​                console.log(localStorage.name);

​                console.log(localStorage[name];

​            刪除:

​                localStorage.removeItem("key");

​                delete localStorage.key;

​                localStorage.clear();清除全部;

​        2,sessionStorage:臨時存儲; 其餘同上;

​        獲取:    console.log(sessionStorage.getItem("key"))

​                console.log(sessionStorage.name);

​                console.log(sessionStorage[name]);

#### cookie:會話跟蹤  ;有域的限制;  只能存儲字符串;時間限制;大小限制4kb‘



##### 柯里化函數:將多個參數的函數轉化成一個參數的函數    add(2)(3)(4); 9     add(2,3,4)

function add(a){

​    return function(b){

​        return function(c){

​            return a+b + c;

​            }

​        }

​    }

let add = (a)=>(b)=>(c)=>a+b+c;同上的簡化;

console.log(add(2)(3)(4));

但函數箭頭函數:var  fn = ()=>({a:9});同等於function  fn(){

return{

​    a:3,

​    }

}sss

​    var   fn = a = >a;



堆和棧 堆?? 

存放關鍵字new建立的對象和數組。 堆內存被全部線程共享。 棧 存放8種基本類型的數據和對象引用(不是對象)。 每一個線程有本身的單獨的棧。 先進後出,後進先出

 

 基本數據類型和引用數據類型  

基本數據類型指的是簡單的數據段,引用數據類型指的是有多個值構成的對象。 引用類型? 也就是對象類型Object type,好比:Object 、Array 、Function 、Data等。

 element:指一個總體必不可少或固有的部分,強調一個複雜總體中最基本、最簡單的元件、元素或成分等 component:指一個總體的組成部分。 
相關文章
相關標籤/搜索