JavaScript删除运算符和Object.create()方法

JavaScript删除运算符和Object.create()方法,javascript,object,delete-operator,object-create,Javascript,Object,Delete Operator,Object Create,我正在尝试从Person对象中删除属性,如下所示: const Person={ 名字:“约翰”, 姓:“Doe” } console.log(Person.firstname); //输出:“John” 删除Person.firstname; console.log(Person.firstname); //输出:如果要删除的属性是自己的不可配置属性,则未定义的删除仅会成功从对象中删除属性。在这里,您的Person2没有自己的firstname属性,因此删除Person2.firstname

我正在尝试从
Person
对象中删除属性,如下所示:

const Person={
名字:“约翰”,
姓:“Doe”
}
console.log(Person.firstname);
//输出:“John”
删除Person.firstname;
console.log(Person.firstname);
//输出:如果要删除的属性是自己的不可配置属性,则未定义的
删除
仅会成功从对象中删除属性。在这里,您的
Person2
没有自己的
firstname
属性,因此
删除Person2.firstname
不起作用。该属性存在于
Person2
的内部原型上,但不存在于
Person2
本身上

要删除属性,必须使用prototype对象调用
delete

delete Person.firstname;
const Person={
名字:“约翰”,
姓:“Doe”
}
const Person2=Object.create(Person);
删除Person.firstname;
控制台日志(Person2)
delete
仅当要删除的属性是自己的不可配置属性时,才会从对象中成功删除该属性。在这里,您的
Person2
没有自己的
firstname
属性,因此
删除Person2.firstname
不起作用。该属性存在于
Person2
的内部原型上,但不存在于
Person2
本身上

要删除属性,必须使用prototype对象调用
delete

delete Person.firstname;
const Person={
名字:“约翰”,
姓:“Doe”
}
const Person2=Object.create(Person);
删除Person.firstname;

控制台日志(Person2)您正在创建浅拷贝,并且希望执行深拷贝

tht可以通过以下方式实现

const Person={
名字:“约翰”,
姓:“Doe”
}
const Person2=Object.assign({},Person);
console.log(Person2.firstname);
//输出:“John”
删除Person2.firstname;
console.log(Person2.firstname);
//预期输出:未定义
//实际输出:“未定义”

console.log(Person2.lastname)
您正在创建一个浅拷贝,并且希望执行深度拷贝

tht可以通过以下方式实现

const Person={
名字:“约翰”,
姓:“Doe”
}
const Person2=Object.assign({},Person);
console.log(Person2.firstname);
//输出:“John”
删除Person2.firstname;
console.log(Person2.firstname);
//预期输出:未定义
//实际输出:“未定义”
console.log(Person2.lastname)