[英]Javascript Getters & Setters in body?
据我了解,javascript 中的 getter 和 setter 只能在对象内部使用,例如:
const myObj = {
a: 7,
get b() {
return this.a + 1;
},
set c(x) {
this.a = x / 2;
}
};
这意味着您只能通过 object 访问 getter 和 setter:
console.log(myObj.a);
console.log(myObj.b);
myObj.c = 50;
console.log(myObj.a);
有没有办法在 javascript 代码的主体中为变量定义 getter 和 setter? 如:
function set myVar(value)
{
_myVar = value;
(some other instructions...)
}
function get myVar()
{
(some other instructions...)
return _myVar;
}
myVar = 123;
console.log(myVar);
是的,你可以,使用Object.defineProperty
。 在浏览器 javascript window
是全局 scope 中,在其他上下文中将其调整为self
(或globalThis
):
Object.defineProperty(window, 'a', {
get: ()=>12,
set: (v)=>console.log(v)
})
console.log(a);
a=12;
Object.defineProperty
是 getter 和 setter 的制作方法,您使用的语法只是它的语法糖。
由于我们使用globalThis
这将只在全局范围内工作。 以这种方式创建的变量不会在 function 的末尾删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.