注册 留言板
当前位置:首页 > 前端开发 > 其它 > 正文

实现 extend 函数

来源:CSDN   发布时间: 2017-06-19   作者:shuidinaozhongyan   浏览次数:
摘要: 浅拷贝使用 Object.assign 就够了,大多数情况下,使用该方法。 深拷贝: (参考: zepto extend) var class2type = {} function ...

浅拷贝使用 Object.assign 就够了,大多数情况下,使用该方法。

深拷贝: (参考: zepto extend)

var class2type = {}
function type(obj) {
  return obj == null ? String(obj) :
    class2type[toString.call(obj)] || "object"
}
function isFunction(value) { return type(value) == "function" }
function isWindow(obj)     { return obj != null && obj == obj.window }
function isDocument(obj)   { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }
function isObject(obj)     { return type(obj) == "object" }
function isPlainObject(obj) {
  return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype
}
var isArray = Array.isArray ||
    function(object){ return object instanceof Array }

function extend(target, source, deep) {
  for (key in source)
    if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {
      if (isPlainObject(source[key]) && !isPlainObject(target[key]))
        target[key] = {}
      if (isArray(source[key]) && !isArray(target[key]))
        target[key] = []
      extend(target[key], source[key], deep)
    }
    else if (source[key] !== undefined) target[key] = source[key]
}

直接 Clone 一个 Nested Object 的简便方法:

var origin = {"a": "a"}
var copy = JSON.parse(JSON.stringify(origin));


我来说两句
评论内容:
验  证  码:
 
(网友评论仅供其表达个人看法,并不表明本站同意其观点或证实其描述。)
评论列表
已有 0 条评论(查看更多评论)
精彩专题
友情链接:
QQ交流群:①群 155252576 ②群 469193068 ③群 531831996 ④群 243504572
设为首页 - 加入收藏 Copyright @2016 Infocool 版权所有 粤ICP备16000626号