deepClone

Object.prototype.clone = function(){ var res = Object.create(Object.getPrototypeOf(this)) var props = Object.getOwnPropertyNames(this) props.forEach(function(item){ if(Object.prototype.toString.call(this[item]) ==="[object Object]" || Object.prototype.toString.call(this[item]) ==="[object Array]") return res[item] = this[item].clone() des = Object.getOwnPropertyDescriptor(this, item) Object.defineProperty(res, item, des) }, this) return res }
Object.getOwnPropertyDescriptor 实际上还是会拷贝地址,所以对引用类型还是要兼容

posted @ 2020-08-24 14:19  铁拳无敌  阅读(179)  评论(0编辑  收藏  举报