繁体   English   中英

Javascript Getters & Setters 在体内?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM