es6中的WeakMap弱引用实践 避免在同一个对象重复定义属性

let hash = new WeakMap(); // 弱引用映射表

// 设置数据
function setData(target, val) {
  if (hash.has(target)) return hash.get(target);
  hash.set(target, val);
  console.log("you are set data");
  setData(target, val); //递归调用 => 不会再为对象添加已有的相同属性
  return obj;
}

let preson = {
  name: "Jane",
  age: 18
}

let obj = {
  say: {
    msg: "哈哈"
  }
}
console.log(setData(preson, obj));

 

你可能感兴趣的:(es6中的WeakMap弱引用实践 避免在同一个对象重复定义属性)