行为类似于函数的JavaScript变量

问题描述 投票:2回答:2

是否可以创建链接到函数的变量,并在每次读取变量时执行该函数?当某个翻译的调用已经发生时(返回将来可能会改变的翻译字符串),用例将是更新语言翻译。这有点类似于类的get ter方法,但没有实际定义类。

任何想法(如果有的话)如何完成?

javascript lazy-evaluation getter
2个回答
4
投票

Object.defineProperty()

1
投票
global

与此相同:

<script>
var foo = 123;

function bar() { console.log( foo ) };
bar();
</script>

(或多或少)与此相同:

<script>
document.window.foo = 123;

function bar() { console.log( foo ) };
bar();
</script>

所以我们可以滥用<script> Object.defineProperty( window, "foo", { value: 123 } ); function bar() { console.log( foo ) }; bar(); </script> 来获得所需的效果,但要注意的是,它无法在无法访问Object.defineProperty属性的JavaScript范围内工作。

Object.defineProperty

使用方式如下:

global
© www.soinside.com 2019 - 2024. All rights reserved.