Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Object.create()混乱-如何访问/销毁对象?_Javascript_Object - Fatal编程技术网

Javascript Object.create()混乱-如何访问/销毁对象?

Javascript Object.create()混乱-如何访问/销毁对象?,javascript,object,Javascript,Object,如果我有以下代码: const person = { name: "Tom", isHuman: true, kill() { // do stuff } }; Object.create(person); 如何访问该对象或删除/销毁它?我知道我可以做如下事情: const me = Object.create(person); me.name = "Bob"; 但那不是我想要的。我不想分配它 同样,如果您: const person = {} 您正在创建对象(而

如果我有以下代码:

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

Object.create(person);
如何访问该对象或删除/销毁它?我知道我可以做如下事情:

const me = Object.create(person);
me.name = "Bob";
但那不是我想要的。我不想分配它

同样,如果您:

const person = {}
您正在创建对象(而不是类)person。因此,要访问方法kill,只需

person.kill();
但我认为您需要创建一个类,在这种情况下,您可以:

class Person {
    name = "Tom";
    isHuman = true;

    kill(){
    }
}

const me = new Person();
me.name = "Bob";
me.kill();
或者不使用类,您可以

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

const me = createPerson();
me.name = "Bob";
me.kill();

您可以轻松删除创建的对象,而无需
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