使用Object.defineProperty()和Object.getOwnPropertyDescriptor()方法实现深拷贝
下面展示一些 内联代码片
。
var extend = function (to, from) {
for (var property in from) {
// hasOwnProperty那一行用来过滤掉继承的属性,否则可能会报错,因为Object.getOwnPropertyDescriptor读不到继承属性的属性描述对象。
if (!from.hasOwnProperty(property)) continue;
Object.defineProperty(
to,
property,
Object.getOwnPropertyDescriptor(from, property)
);
}
return to;
};
// 传值
extend({}, {A:{a:{aa:{aaa:'111'}},b:'22'},B:'2',C:'3'}); // {A:{a:{aa:{aaa:'111'}},b:'22'},B:'2',C:'3'}
对,你没有看错,就是这么简单!!!