Javascript从属性中删除对象

fra*_*tin -2 javascript

如果您有一个对象附加到属性,如下所示:

obj = {};
obj.prop = {name:'test'};
Run Code Online (Sandbox Code Playgroud)

有没有一种方法,类似于使用array.splice,从该属性中删除对象,并返回它,以便它可以附加到另一个对象?

Cer*_*rus 5

你当然可以:

var obj = {};
obj.prop = { name: 'test' };

var newObj = { prop: obj.prop} ; // Copy prop to a new object
delete obj.prop;                // delete `prop` on the old object.

document.body.textContent = 'newObj: ' + JSON.stringify(newObj);
Run Code Online (Sandbox Code Playgroud)

delete如果属性是自己的不可配置属性(在非严格中返回false),则在严格模式下抛出错误.它会true在所有其他情况下返回.

因此,虽然技术上不是类似函数popsplice返回已删除属性的函数,但解决这个问题是微不足道的.