首页 > 解决方案 > Object.create() 混乱 - 你如何访问/销毁对象?

问题描述

如果我有以下代码:

const person = {
  name: "Tom",
  isHuman: true,
  kill() {
    // do stuff
  }
};

Object.create(person);

我将如何访问该对象或删除/销毁它?我知道我可以做类似的事情:

const me = Object.create(person);
me.name = "Bob";

..但这不是我要找的。我不想分配它。

同样,我如何在kill()不先分配方法的情况下访问该方法(例如me.kill();

标签: javascriptobject

解决方案


var let你可以很容易地删除一个没有或的创建对象const

const person = {
  name: "Tom",
  isHuman: true,
};
me = Object.create(person);
delete me
// `me` is removed, and become not defined
// console.log(me) throws an error.

Javascript 使用垃圾收集器,您可以使用它来删除对象。对象或未引用的数据将被删除:

const person = {
  name: "Tom",
  isHuman: true,
};
let me = Object.create(person);
me = null
// { name: "Tom", ... } become unreachable, garbage remove it from the memory.

使用时const,不能分配新值,也不能删除这个值/对象/数据。但是你可以用这样的东西来清除它:

const person = {
  name: "Tom",
  isHuman: true,
  kill() {
    delete this.name
    delete this.isHuman
  }
};
const me = Object.create(person);
console.log(person.name) // "Tom"
// delete me // delete nothing
// me = null // throws an error, because you can't assign new value to a const

person.kill()
console.log(person.name) // undefined
console.log(person.isHuman) // undefined

推荐阅读