gpt4 book ai didi

javascript - 为什么在数组中使用 javascript 函数不起作用?

转载 作者:行者123 更新时间:2023-12-02 20:29:00 25 4
gpt4 key购买 nike

我正在尝试创建一个函数数组,以便我可以根据索引调用一个函数。设置功能不起作用。 setF1 和 setF2 函数可以。使事情以这种方式工作的设计决策是什么?

您可以在 jrootham.tjddev.net/test/test.html 找到测试页面

我似乎无法在此处粘贴测试代码。

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var thing =
{
f1 : function() {alert(1);},
f2 : function() {alert(2);},
setF1 : function() {this.call = this.f1;},
setF2 : function() {this.call = this.f2;},
list : [this.f1, this.f2],
set: function(index){this.call=this.list[index];},
call : this.f1
}
</script>
</head>
<body>
<button type="button" onClick="thing.set(0)">Set 0</button>
<button type="button" onClick="thing.set(1)">Set 1</button>
<button type="button" onClick="thing.setF1()">Set F1</button>
<button type="button" onClick="thing.setF2()">Set F2</button>
<button type="button" onClick="thing.call()">Call</button>
</body>
</html>

最佳答案

这不起作用的原因是 thiscall:this.f1的背景下实际上是在引用windowthing .

this仅引用 thing来自内部 thing的成员函数。

但是以下可以工作:

var thing = { //watch out for semicolon insertion...
f1 : function() {alert(1);},
f2 : function() {alert(2);},
setF1 : function() {this.call = this.f1;},
setF2 : function() {this.call = this.f2;},
set: function(index){ this.call=this.list[index]; },
call : function() {
this.f1();
}
};
thing.list = [thing.f1, thing.f2];

关于javascript - 为什么在数组中使用 javascript 函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4468109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com