访问器属性

13、访问器属性

let attribute = {
     
	id: 11,
	sname: '名字'
};

// 给 attribute 对象添加两个属性:_age 和 age
// age 作为保镖保护 _age
// 第一步
Object.defineProperties(attribute, {
     
	// 先添加一个半隐藏的 _age
	_age: {
     
		// 值
		value: 26,
		// 可以改
		writable: true,
		// 半隐藏
		enumerable: false,
		// 双保险
		configurable: false,
	},

	// 再为 _age 添加一个保镖 -- 访问器属性
	age: {
     
		get: function() {
     
			return this._age;
		},
		set: function(value) {
     
			if (value >= 18 && value <= 65) {
     
				this._age = value;
			} else {
     
				throw Error('年龄必须介于18~65之间。');
			}
		},
		enumerable: true,
		configurable: false
	}
});

console.log(attribute);
// {id: 11, sname: "名字", _age: 26}

console.log(attribute.age);
// 26

console.log(attribute._age);
// 26

attribute.age = 27;
console.log(attribute.age);
// 27

attribute.age = 16;
console.log(attribute.age);
// Uncaught Error: 年龄必须介于18~65之间。

你可能感兴趣的:(JavaScript,javascript)