Jim*_*nes 3 javascript getter-setter
在定义对象文字时,可以使用自调用函数,以便函数可以访问私有变量,
obj={
value:(function(){
var private;
return function(){
return true;
}
}())
};
Run Code Online (Sandbox Code Playgroud)
但是可以用对象文字中的getter/setter做同样的事情吗?
obj={
get value(){
return value;
},
set value(v) {
value=v;
}
};
Run Code Online (Sandbox Code Playgroud)
并不是的.您也可以创建一个IIF obj:
obj = function () {
var privatething = 'hithere';
return {
get value() {
return privatething;
},
set value(v) {
privatething = v;
}
};
}();
obj.value; //=> 'hithere';
obj.value = 'good morning to you too';
obj.value; //=> 'good morning to you too'
Run Code Online (Sandbox Code Playgroud)
按照 ES6 及更高版本的风格,也可以在签名中设置默认值。
const _ = function(_x = 'leafy greens', _y = 'chicken', _z = 'noodle soup') {
// console.log(_x)
return {
_x,
_y,
_z,
get x() { return this._x },
set x(value) { this._x = value }
}
}()
console.log(_.x)
_.x = 'beef & pork'
console.log(_.x)Run Code Online (Sandbox Code Playgroud)