zoukankan      html  css  js  c++  java
  • 拷贝的概念和方法

    #### 拷贝
    
    深拷贝:对象在赋值的时候拷贝的是对象的值  类似于值传递;
    
    浅拷贝:对象在赋值的时候拷贝的是对象的索引  类似引用传递;
    
    值传递:赋值 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:指一个整体的组成部分。 
  • 相关阅读:
    js冒泡排序
    HTML5 canvas 计时器
    centos 6.4安装杀毒软件clamAV 0.98[转]
    PHP大文件下载
    如何在 Eclipse 中使用插件构建 PHP 开发环境[转]
    CentOS 单用户模式:修改Root密码和grub加密[转]
    CentOS 6.0 VNC远程桌面配置[转]
    gprof使用介绍 (gcc -pg) [转]
    VMware NAT端口映射外网访问虚拟机linux
    shell判断文件是否存在[转]
  • 原文地址:https://www.cnblogs.com/Leslie-Cheung1584304774/p/10734617.html
Copyright © 2011-2022 走看看