zoukankan      html  css  js  c++  java
  • 面试题:实现一个方法clone;可以对js五种数据类型进行值复制

    //先来方法的代码
    function
    clone(obj) { var copy; switch(typeof obj){ case 'number': case 'string': case 'boolean': copy = obj; break; case 'object': if (obj == null) { copy = null } else if (toString.apply(obj) === '[object Array]') { copy = []; for (var i in obj) { copy.push(clone(obj[i])) }; } else { copy = {}; for (var j in obj) { copy[j] = clone(obj[j]); } } } return copy; }

    number , string , boolean 直接赋值

    object , array 遍历后赋值

    方法中用到的apply方法

    apply方法: 
    语法:apply([thisObj[,argArray]]) 
    定义:应用某一对象的一个方法,用另一个对象替换当前对象。 
    说明: 
    如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 
    如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

    call方法: 
    语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 
    定义:调用一个对象的一个方法,以另一个对象替换当前对象。 
    说明: 
    call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 
    如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

      //各种类型的返回值; call 和 apply 返回值相同; 只是参数不同
       console.log("string" +toString.apply(str)) // string[object String] console.log("number" +toString.apply(num)) // number[object Number] console.log("object" +toString.apply(obj)) // object[object Object] console.log("array" + toString.apply(arr)) // array[object Array] console.log("boolean" + toString.apply(bool)) // boolean[object Boolean] console.log("undefined" + toString.apply(undefined))   //undefined[object Undefined] console.log("null" + toString.apply(null))    // null[object Null]
  • 相关阅读:
    JAVA 问题
    WebStrom配置多个项目的Dweployment时,设置默认的启动配置
    C#中有关数组和string引用类型或值类型的判断
    Delegate(代理)异常:该委托必须有一个目标
    RMAN BACKUP
    Oracle ORA-01033: 错误解决办法
    微信公众号开发 接口配置信息 配置失败
    使用JAVA开发微信公众平台(一)——环境搭建与开发接入
    微信开发准备(四)--nat123内网地址公网映射实现
    nat123安装启动教程帮助
  • 原文地址:https://www.cnblogs.com/mr-yuan/p/6121774.html
Copyright © 2011-2022 走看看