Javascript Javasctipt调用对象';数组中的s函数

Javascript Javasctipt调用对象';数组中的s函数,javascript,canvas,Javascript,Canvas,index.html <body> <canvas id ="mainCanvas" width = "400" height = "400"></canvas> <script src ="script.js"></script> <script src ="test.js"></script> </body> 它说: 未捕获类型错误:非法调用 通常这context.fi

index.html

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

</body>
它说:

未捕获类型错误:非法调用

通常这
context.fillRect(10,10,10,10)
可以工作


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

这里的问题实际上是上下文。键入数组[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)

为什么需要将同一个函数多次存储在阵列中?只需测试功能哇,谢谢!)如果没有这个函数(params),我怎么能调用它,因为它调用对象的函数?
var canvas = document.getElementById("mainCanvas")
var context = canvas.getContext("2d")

var array = [
context.fillRect
]

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