面试题:实现一个方法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]
面试题:实现一个方法clone;可以对js五种数据类型进行值复制的更多相关文章
- 实现一个clone函数,对javascript中的5种数据类型进行值复制
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 编写Java应用程序。首先,定义一个Print类,它有一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在 控制台打印出小写的英文字母表。其次,再定义一个主类——TestClass,在主类 的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大 小写英文字母表。
package zuoye; public class print1 { String a="abcdefghigklmnopqrstuvwxyz"; String B=" ...
- 用javascript判断一个html元素是否存在的五种方法:
1. 判断表单元素是否存在(一) if("periodPerMonth" in document.theForm){ return true; }else{ return fals ...
- 首先,定义一个Print类,它有一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在 控制台打印出小写的英文字母表。其次,再定义一个主类——TestClass,在主类 的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大 小写英文字母表。
package lianxi; public class Print_1 { int x; Print_1(int x) { this.x = x; } void outPut() { String ...
- .编写Java应用程序。首先,定义一个Print类,它有一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在 控制台打印出小写的英文字母表。其次,再定义一个主类——TestClass,在主类 的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大 小写英文字母表。
package com.homework.zw; //类Print部分 public class Print1 { int x; void output() { if(x==1) { for(int ...
- 7.编写Java应用程序。首先,定义一个Print类,它有一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在 控制台打印出小写的英文字母表。其次,再定义一个主类——TestClass,在主类 的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大 小写英文字母表。
package com.bao; public class Print1 { int x; void output() { if(x==1) { System.out.println("AB ...
- JS实现clone()方法,对五种主要数据类型进行值复制
Object.Array.Boolean.Number.String 分为三种情况:普通变量,Array,Object 递归调用
- Redis的五种数据类型及方法
字符串string: 字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,他在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描 ...
- jedis五种数据类型的方法解释
常用命令 1)连接操作命令 quit:关闭连接(connection) auth:简单密码认证 help cmd: 查看cmd帮助,例如:help quit 2)持久化 save:将数据同步保存到磁盘 ...
随机推荐
- 自定义JSP中的Taglib标签之四自定义标签中的Function函数
转自http://www.cnblogs.com/edwardlauxh/archive/2010/05/19/1918589.html 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于 ...
- [ios2]使用NSOperationQueue简化多线程开发和队列的优先级 【转】
多线程开发是一件需要特别精心的事情,即使是对有多年开发经验的工程师来说. 为了能让初级开发工程师也能使用多线程,同时还要简化复杂性.各种编程工具提供了各自的办法.对于iOS来说,建议在尽可能的情况下避 ...
- Python 购物车----之用户部分
知识点: 文件读,写操作,if 判断, for 循环 salary = input("输入你的工资:") bought_list = [] product_list = {} wi ...
- JS函数调用
function SayHello(word) { console.log(word); } function execute(Somefunction,value) { Somefunc ...
- 如何使用jconsole(英文)
http://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html
- JS 高效快速的数组去重
Array.prototype.uniquer = function() { var result = [], hash = {}; ; i < this.length; i++) { if ( ...
- Submission
EI: ICIC Express Letters: http://www.icicelb.org/elb/index.html IJICIC: http://www.ijicic.net/ijicic ...
- ansible module
模块是一个独立的, 可以复用的脚本, 它可以被anisible API, Ansible 或者ansible-playbook使用. 在模块退出之前, 它通过输出一个json字符串到标准输出从而反 ...
- css基础和心得(三)
OK!接下来我们分别说这些元素的意义.首先,什么是块级元素?在html中<div>,<p>,<h1>,<form>,<ul>和<li& ...
- Jedis实现发布订阅功能
Redis为我们提供了publish/subscribe(发布/订阅)功能.我们可以对某个channel(频道)进行subscribe(订阅),当有人在这个channel上publish(发布)消息时 ...