使用自调用函数javascript在对象文本中定义getter/setter

使用自调用函数javascript在对象文本中定义getter/setter,javascript,getter-setter,Javascript,Getter Setter,定义对象文字时,可以使用自调用函数,以便该函数可以访问私有变量 obj={ value:(function(){ var private; return function(){ return true; } }()) }; 但是,在对象文本中使用getter/setter也可以做同样的事情吗 obj={ get value(){ return value; }, se

定义对象文字时,可以使用自调用函数,以便该函数可以访问私有变量

obj={
    value:(function(){
        var private;
        return function(){
            return true;
        }
    }())
};
但是,在对象文本中使用getter/setter也可以做同样的事情吗

obj={
    get value(){
        return value;
    },
    set value(v) {
        value=v;
    }
};

不是真的。您还可以通过以下方式为
obj
创建IIF:

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'
这很有效

var obj={a:1};
控制台日志(obj.a)//1.
Object.defineProperty(obj,“a”{
get:function(){
把这个还给我;
},
集合:功能(x){
这个。b=x;
},
对,,
});
目标a=10;
控制台日志(obj)//10
for(obj中的var键)
{
console.log(键)

}
根据ES6和更高版本的样式,也可以在签名中设置默认值

const=function(x='绿叶蔬菜',y='鸡肉',z='面条汤'){
//console.log(x)
返回{
_x,,
_y,,
_z,,
get x(){返回这个。x},
设置x(值){this.\ux=value}
}
}()
console.log(ux.x)
_.x=‘牛肉和猪肉’
console.log(ux)