gpt4 book ai didi

javascript - Javascript 从数组调用对象函数

转载 作者:行者123 更新时间:2023-11-30 16:18:28 26 4
gpt4 key购买 nike

index.html

<body>
<canvas id ="mainCanvas" width = "400" height = "400"></canvas>
<script src ="script.js"></script>
<script src ="test.js"></script>

</body>

test.js

var canvas = document.getElementById("mainCanvas")
var context = canvas.getContext("2d")

var array = [
context.fillRect
]

array[0](10,10,10,10)

它说:

Uncaught TypeError: Illegal invocation

通常这个 context.fillRect(10,10,10,10) 有效...

那么为什么我不能从数组中调用该引用?

最佳答案

这里的问题实际上是上下文。当您键入 array[0] 时,您处于该函数对象的上下文中(函数是 javascript 中的对象)。但是您想处于上下文变量的上下文中。所以有两种解决方案

var canvas = document.getElementById("mainCanvas")
var context = canvas.getContext("2d")

var array = [
function(params) {
context.fillRect(params)
}
]

array[0](10,10,10,10)

或使用调用

的第二种方法
var canvas = document.getElementById("mainCanvas")
var context = canvas.getContext("2d")

var array = [
context.fillRect
]

array[0].call(context,10,10,10,10)

关于javascript - Javascript 从数组调用对象函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35117827/

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