如何让js变量变成可执行

1
2
3
4
5
function func() {
var a = 1
console.log('执行了..., 打印出:' + a)
}
func()

通常我们想处理一段逻辑时,需要使用函数/方法,那么如何使用字符串来执行一个方法呢???

可以巧妙的使用 Object.defineProperty() 方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var a = false
Object.defineProperty(window, 'toggle', {
get() {
a = !a
console.log('a:', a)
return '🐶'
}
})

// 执行奇数次
// a: true
// 🐶

// 执行偶数次
// a: false
// 🐶

这样就可以通过直接调用 toggle,来实现我们平常的 toggle()。在一些开发者调试工具中,开发人员通过向控制台输入变量达到切换开关的目的,这样比执行函数更叫方便、更加巧妙。