zoukankan      html  css  js  c++  java
  • 实现一个clone函数,对javascript中的5种数据类型进行值复制

     1 <!doctype html>
     2 <html lang="en">
     3  <head>
     4   <meta charset="UTF-8">
     5   <title>Clone</title>
     6  </head>
     7  <body>
     8     <script>
     9         function clone(arr){
    10                  var copy;
    11                  switch( typeof obj){
    12             case "undefined":
    13             break;
    14             case "number":
    15             copy=obj-0;
    16             break;
    17             case "string":
    18             copy=obj+"";
    19             break;
    20             case "boolean":
    21             copy=obj;
    22             break;
    23             case "object":
    24             if(obj==null){
    25                  copy=null;
    26             }else{                                
    27   if(Object.prototype.toString.call(obj).slice(8,-1)==="Array"){
    28                 copy=[];
    29                 for(var i=0;i<obj.length;i++){
    30                   copy.push(clone(obj[i]));
    31                }
    32             }else{
    33                 copy={};
    34                for(var j in obj){
    35                 copy[j]=clone(obj[j]);
    36                }
    37             }
    38             }
    39             default:
    40                 copy=obj;
    41             break;
    42                 }
    43         return copy;
    44             }    
    45     </script>
    46  </body>
    47 </html>
    48     
    View Code

    整体思路:数组作为参数传递给clone函数。判断数组的数据类型,根据不同的数据类型做不同操作。

         其中只有object对象类型,需要分多种情况,因为typeof null 返回的数据类型也是“object”,所以进行单独的操作。
         另外由于typeof返回的只是基本数据类型。所以需要进一步对数组和对象的类型进行判定。如下:

     1 if(Object.prototype.toString.call(obj).slice(8,-1)==="Array"){
     2                             copy=[];
     3                             for(var i=0;i<obj.length;i++){
     4                                 copy.push(clone(obj[i]));
     5                             }
     6                         }else{
     7                             copy={};
     8                             for(var j in obj){
     9                                 copy[j]=clone(obj[j]);
    10                             }
  • 相关阅读:
    tomcat的安装及配置
    java动态代理的实现
    mySql单列索引与联合索引的区别
    maven3.5.0在win10中的安装及环境变量配置
    jQuery相关知识总结
    前端-css
    前段篇:HTML
    Mysql基础安装,初视篇
    论事件驱动与异步IO
    python 之协程
  • 原文地址:https://www.cnblogs.com/rookiehao/p/8349811.html
Copyright © 2011-2022 走看看