Object.defineProperty()

深入理解Object.defineProperty
本文详细介绍了JavaScript中Object.defineProperty方法的使用,包括如何定义和修改对象属性,以及如何使用getter和setter实现属性的动态读写控制。

Object.defineProperty()方法会在对象上修改属性或者定义一个新属性 格式如下:

var obj = {};
var objDef = {
    configurable:true,//true表示该属性可删除,默认值是false,
    enumerable:true,//true表示该属性可枚举,默认值是false
    value:'key1',//赋值给'newKey'的值,默认值是undefined
    writable:true,//true表示该属性可修改,默认值是false
    //get,set在下面另外介绍
};
Object.defineProperty(obj,'newKey',objDef);
console.log(obj.newKey);//key1
复制代码

注意:当使用了getter或setter方法,不允许使用writable和value这两个属性

var obj = {};
var initName = 'tangj'
Object.defineProperty(obj,'name',{
	get:function(val){
		return initName
	},//获取属性时触发该函数
	set:function(val){
		initName = val
	},//给该属性赋值时触发该函数
})
console.log(obj.name)
obj.name = 'change value';
console.log(obj.name)
复制代码

使用 js 实现一个只读的属性

var obj = {};
var initName;
Object.defineProperty(obj,'name',{
    
	set:function(val){
		console.log(`name is readonly.`, this)
	},//给该属性赋值时触发该函数
})
console.log(obj.name);//undefined
obj.name = 'change value';
console.log(obj.name);//undefined
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值