zoukankan      html  css  js  c++  java
  • 浅拷贝与深拷贝

    判定一个对象属于那种类型的值:
    Object.prototype.toString()判断内建类型对象和客户端类型对象

    对象的拷贝:
    浅拷贝(对于一个引用类型,如果直接将它赋值给另一个变量,由于这两个引用指向同一个地址,这时改变其中任何一个引用,另一个都会受到影响): 1.直接赋值登录 2.Object.assign({},obj)3.$.extend(false,{},obj)
    深拷贝(对于一个引用类型,如果直接将它赋值给另一个变量,由于这两个引用指向同一个地址,这时改变其中任何一个引用,另一个不会受到影响): 1.$.extend(true,{},obj) 2.JSON.parse(JSON.stringify(obj))
    3.
    //类型判断
    function getType(obj){
    //tostring会返回对应不同的标签的构造函数

    var toString = Object.prototype.toString;

    var map = {

    '[object Boolean]' : 'boolean',

    '[object Number]' : 'number',

    '[object String]' : 'string',

    '[object Function]' : 'function',

    '[object Array]' : 'array',

    '[object Date]' : 'date',

    '[object RegExp]' : 'regExp',

    '[object Undefined]': 'undefined',

    '[object Null]' : 'null',

    '[object Object]' : 'object'

    };

    if(obj instanceof Element) {

    return 'element';

    }

    return map[toString.call(obj)];

    }
    //深拷贝
    function deepClone(data){

    var type = getType(data);

    var obj;

    if(type === 'array'){

    obj = [];

    } else if(type === 'object'){

    obj = {};

    } else {

    //不再具有下一层次

    return data;

    }

    if(type === 'array'){

    for(var i = 0, len = data.length; i < len; i++){

    obj.push(deepClone(data[i]));

    }

    } else if(type === 'object'){

    for(var key in data){

    obj[key] = deepClone(data[key]);

    }

    }

    return obj;

    }

  • 相关阅读:
    快速开始Python/WSGI应用程序
    git clone 指定的单个目录或文件夹
    django-1-应用开发基本套路
    raid管理
    Linux下利用script命令录制并回放终端会话
    Mysqldump参数大全
    在crontab中执行脚本重要事项
    IDEA 不能搜索插件解决方案之一
    将页面整体显示为灰色的 CSS
    Linux CentOS7.5静默安装Oracle11gR2
  • 原文地址:https://www.cnblogs.com/tutao1995/p/9777230.html
Copyright © 2011-2022 走看看