为什么在为画布声明变量时添加[0]

Why add [0] when declaring a variable for canvas?

本文关键字:变量 添加 声明 布声明 为什么      更新时间:2023-09-26

在此代码中:

var canvas = $("#myCanvas")[0];
var ctx = canvas.getContext("2d");

为什么我们必须添加[0]来识别画布?这让我有点困惑,因为[n]通常是在有多个元素具有相同名称并且我们需要寻址特定元素时添加的。但是id只能引用一个唯一的元素。

此语法用于从jQuery对象检索底层画布DOMElement,以便可以使用getContext()方法(jQuery对象没有)。

$('#myCanvas')                      // = canvas DOMElement wrapped in a jQuery object
$('#myCanvas')[0]                   // = canvas DOMElement
document.getElementById('myCanvas') // = canvas DOMElement

另请参阅:

什么是jQuery对象

画布API参考

jQuery始终返回类似数组的对象,即使您使用(唯一)id作为选择器也是如此。

在您的情况下,[0]将返回第一个(也是唯一一个)实际元素。