js 删除对象属性_js: 对象中单个属性的特性

属性的特性:
writable: true // 可写 是否可设置该属性的值
enumerable: true // 可枚举 for/in是否可以获得该值
configurable: true // 是否可以删除属性或修改该属性的特性
// 在node中即使是false也会被删除自定义属性的特性:
Object.defineProperty(对象, 属性名, 特性描述对象)
Object.defineProperties(对象, 多属性特性描述对象)查看属性的特性:
Object.getOwnPropertyDescriptor(对象, 属性名) -> 私有属性的特性描述小技巧:
好用的set get

自定义属性的特性

Object.defineProperty(对象, 属性名, 特性描述对象)

writable:false

var 

91a5cdddfacb661b4dab8ea7a60feb86.png

enumerable: false

在浏览器中打印obj可以显示,只是在for/in循环中不可枚举

在node中打印obj不可以显示

var 

b5928610a47c11df662460920f0086e5.png

9afd000a2457a35caacd62c72bc72ffa.png

configurable: false

  1. 在浏览器中delete obj.z 会返回false,不被删除。在node中会被删除
var 

e708bde4db4c43a29a18ce769e7fa22f.png

427ed12a7076787ef5fd07547e33172d.png

2. 不可重新写属性的特性配置,不然会报错。如果是true则不报错

var 

3252f41bb4e70fa1d0366abbd466a139.png

报错。

改成configurable: true

var 

d41c483d914c8f57c66dc395b04de966.png

重新配置成功

Object.defineProperties(对象, 多属性特性描述对象)

var 

371c354ddcbe3cc301b7b23d25fa672c.png

查看属性的特性:
Object.getOwnPropertyDescriptor(对象, 属性名)

var 

127a997366ddce56e067048b29a0e666.png

小技巧的使用:

假设一个班上有男生10人,女生8人,每人班费10元,班上的人数不会变,但是费用会变动。

对象中的函数

let 

0bf75359cfd26894585efdda551d2516.png

只要修改了自定义属性中的onemoeny价格,再次查看对象,对象中的allmoney就会改变。

abc5802875cf3a67c1511b8e7528959d.png

get是函数返回出来的结果。

注意的点:

自定义的属性不能在再配置set/get函数中出现,不然会死循环报错

let 

bcaa33ededada69206925a1bcb66ca69.png

最大次数超过堆栈的最大值

模拟死循环

let 

9d98d4ed77ab134e70efbf4441d9463d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值