js的属性标签---------[configurable][enumerable][writable]以及结合set/ get的使用

  • 获取对象属性

我们可以通过Object.getOwnPropertyDescriptor() 方法来获取一个对象的所有属性标签


	Object.getOwnPropertyDescriptor({pro:true},'pro');
	//Object.{value:true,wirtable:'true,enumerbale:true,configurable:true}
	Object.getOwnPropertyDescriptor({pro:true},'a');//undefined
	
  • 创建属性

value 这个属性值
writable 这个属性是否可写
enumerable 这个属性是否可以被遍历,被枚举
configurable 这个属性是否可以被修改 被delete

通过Object.defineProperty 去创建属性

	
	
	var person={}
	Object.definedProperty(peroson,'name',{
	    configurable:false,
	    writbale:false,
	    enumerable:true,
	    value:'Bosn Ma'
	})
	
	person.name;//Bosn Ma
	person.name=1;
	peroson.name;//Bosn Ma
	delete peroson.name  //false
	
  • 同时创建多个
	var person={}
	Object.definedProperties(person,{
	    ​name:{value:'dudu',enumerable:true},    ​
	    ​age:{value:'3',writable:true},
	    luck:{
	    get:function(){
	        return Math.random()>0.5?'good':'bad';
	    }
	},
		money:{
		    set:function(level){
	   		this.age*=1+level*0.1;
	   }    
	}

	})
	
	Object.getOwnPropertyDescriptor( person,'name')
	person.age; //3
	person.money=2;
	person.age;//3.6

在这里插入代码片

不可枚举的举例

var person={}
Object.defineProperty(person,'type',{
enumerable:false,
value:'1'
})
person.name='dudu'

Object.keys(person) // name 

不会打印出type这个属性  因为其属性已经设置为不可枚举

  • 修改属性问题

在这里插入图片描述

configurablefalse时,只允许writabletrue改为false

可能从安全性出发,减少修改权限,不可以增加修改权限。

以上内容均为个人学习笔记,不存在任何其他或者商业行为 ,如有侵权或者其他,必删除。请私聊或者评论告知。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值