JavaScript:delete的用法

从字面上就可以知道,delete的基本功能就删除了,说仔细点,就是可以让一个属性从一个对象中完全消失。

Delete 属性

> var obj = { hello: 'world' };
> delete obj.hello
true
> obj.hello
undefined

如果你把一个属性设为undefined,这个属性是仍然存在于改对象中的,该对象仍然包含它的key值。

> var obj = { foo: 'a', bar: 'b' };

> obj.foo = undefined;
> Object.keys(obj)
[ 'foo', 'bar' ]

但是,如果使用delete,该属性就完全消失于该对象中了。

> var obj = { foo: 'a', bar: 'b' };

> delete obj.foo
true
> Object.keys(obj)
[ 'bar' ]

另外,delete只能删除一个对象的直接属性,那也就是说,并不能删除掉它继承的属性。

var proto = {foo:'a'};
var obj = Object(proto);//obj继承proto
> delete obj.foo
true   //这里返回的依然是true
> obj.foo
'a'   //没有影响

Delete的返回值

如果某属性是一个对象的自有属性,但是并不能被删除,delete操作返回false。
其它情况下都返回true。

var obj = {};
Object.defineProperty(obj, 'canBeDeleted', {
    value: 123,
    configurable: true
});
Object.defineProperty(obj, 'cannotBeDeleted', {
    value: 456,
    configurable: false
});

//obj定义了一个cannotBeDeleted属性,并且该属性不能被删除
> delete obj.cannotBeDeleted
false  //所以返回false  
//其它情况下都返回true
> delete obj.doesNotExist  //删除一个不存在的属性
true
> delete obj.canBeDeleted
true

即使在没有任何改变的情况下,也是返回true。

> delete obj.toString
true
> obj.toString // still there
[Function: toString]
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值