博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道关于javascript数据类型题目的思考
阅读量:6037 次
发布时间:2019-06-20

本文共 1402 字,大约阅读时间需要 4 分钟。

感觉这个题目涉及的基础知识内容比较多,故分享出来,后面会详细介绍数据类型的文章,欢迎关注。

实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。

/** * 对象克隆 * 支持基本数据类型及对象 * 递归方法 */function clone(obj) {    var o;    switch (typeof obj) {        case "undefined":            break;        case "string":            o = obj + "";            break;        case "number":            o = obj - 0;            break;        case "boolean":            o = obj;            break;        case "object": // object 分为两种情况 对象(Object)或数组(Array)            if (obj === null) {                o = null;            } else {                if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") {                    o = [];                    for (var i = 0; i  obj.length; i++) {                        o.push(clone(obj[i]));                    }                } else {                    o = {};                    for (var k in obj) {                        o[k] = clone(obj[k]);                    }                }            }            break;        default:            o = obj;            break;    }    return o;}

如果你有高级前端的水平,这个时候就应该写出下面的代码

Object.prototype.clone = function(){            var o = this.constructor === Array ? [] : {};            for(var e in this){                    o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];            }            return o;    }

基础知识还需要牢固,要不怎么能写出这样高端的写法呢?哈哈?

转载地址:http://ovlhx.baihongyu.com/

你可能感兴趣的文章
jquery 中prop()的使用方法
查看>>
下午考
查看>>
创建字符设备的三种方法
查看>>
走在网页游戏开发的路上(六)
查看>>
nginx 配置的server_name参数(转)
查看>>
Uva592 Island of Logic
查看>>
C++基础代码--20余种数据结构和算法的实现
查看>>
footer固定在页面底部的实现方法总结
查看>>
nginx上传文件大小
查看>>
数字通信原理笔记(一)---概述
查看>>
HDU 2243 考研路茫茫——单词情结(自动机)
查看>>
Dubbo OPS工具——dubbo-admin & dubbo-monitor
查看>>
如何将OpenCV中的Mat类绑定为OpenGL中的纹理
查看>>
CutyCapt
查看>>
Dungeon Master ZOJ 1940【优先队列+广搜】
查看>>
解决https://localhost:1158/em 页面无法打开的问题
查看>>
[Cocoa]深入浅出Cocoa之Core Data(4)- 使用绑定
查看>>
原理:什么是Quadtrees?(转)
查看>>
记:返回方法参数的值(或多个值),
查看>>
Effective C++ 的52个条款列表
查看>>