Javascript中对象的get和set方法的简单理解
-
get和set都是js内置方法(es5),用于设置和读取属性值,当这个属性只有set方法时,只可写入;当只有get方法时,只能够读取的,无法进行更改。
-
当一个属性设置了get和set方法,它就是一个访问器属性
var obj = { _name : 'jay', _age : 24, set name(val) {this._name = val}, get age() {return this._age} }
可见,对象obj中,age是一个只读属性,而name则是一个存储属性,无法访问到。
另外需要注意的是:
_age 和 _name前面加上一个下划线标识此属性是一个私有属性,不是对外公开的的一个接口,这个是约定促成的惯例。同时,如果与set或get函数同名会导致死循环抛出栈溢出错误。
代码运行如下:
console.log (obj.name);//undefined console.log (obj.age);//24 obj.age = 26; //重新赋值age无效 console.log (obj.age);//24