这个语法是什么意思? anArray[source].src = sourceImg;

what does this syntax mean? anArray[source].src = sourceImg;

var source = 0;
var subtitue = 1;

function rollOver(sourceImg,  subImg) {

    var arrayImg = new Array;

    arrayImg[source] = new Image;
    arrayImg[source].src = sourceImg;
    arrayImg[subtitute] = new Image;
    arrayImg[subtitute].src = subImg;

    return arrayImg;
}

anArray是一个数组。

source 是数组的索引。 JavaScript 可以使用任何值作为索引。

Image 类型的对象存在并分配给该索引处的值。

.src 将该对象的属性设置为 sourceImg 的值。

现在参数... source设置为0,sourceImage传入函数。

因此 arrayIndex[0] 被设置为一个新的 Image 对象,并且该对象的 src 属性设置为发送到函数中的 sourceImage 值。

可以这样写:

let image = new Image()
image.src = srcImage
arrayIndex[0] = image

表示将anArray[source]处的对象的值设置为sourceImg处的值。

这里的arrayImg是一个Array,一般表示为:

var arrayImg = [];

source 参数是该数组的索引,但因为它是 JavaScript,所以它实际上不需要是数字。这会导致混淆 and/or 问题,例如,如果 source = 1000 你现在有一个包含很多 undefined 值的 1000 条目数组,这毫无意义。

这是相当冒险的,而且最终是糟糕的代码。最好用对象表示,例如

function rollOver(srcImg,  subImg) {
  var img = new Image();
  img.src = srcImg;

  var sub = new Image();
  sub.src = subImg;

  return {
     main: img,
     sub:  sub
  };
}

(请注意,这仍然令人发指,并且需要修复使用该函数的代码,使其不依赖于值的位置,因为这很脆弱。)

底线是,如果这个 JS 让您感到困惑,那么 SO 不是开始的地方,您应该查看一些基本的 JavaScript 教程,然后正确地学习它。

https://jsfiddle.net/5qb7dc3w/5/

我在动态访问对象的属性时使用括号表示法。

const obj = {
  id: "user",
  password: "password"
};

Object.keys(obj)
    .forEach(function(key) {
        const val = obj[key];
    document.querySelector(`input[name="${key}"]`).value = val;
    });