文件API:reader与event.target

时间:2014-05-20 10:57:20

标签: javascript html fileapi

我已经学习了许多文章和帖子来了解File API,但仍然不明白为什么几乎所有文章和帖子都使用event.target代替reader。以下是三个例子:

  1. File API
  2. Using files from web applications | MDN
  3. Working with files in JavaScript, Part 2: FileReader | NCZOnline
  4. 最后一条引用甚至建议使用event.target

      

    FileReader实例在事件处理程序via中可用   event.target,建议使用它而不是引用   读者变量直接。

    但为什么推荐并广泛使用?使用reader或更简单的this会出现什么问题: DEMO

    我知道thisevent.target可能不同,但在这种情况下,它们都引用FileReader对象。

    虽然您可以使用reader.onload,但为什么不使用reader.result

1 个答案:

答案 0 :(得分:0)

读者变量可能不在范围内:

(function() {
    // variables defined in this IIFE are not visible outside
    var reader = new FileReader();
    reader.addEventListener("load", processText);
    // ...
})();

function processText(event) {
    // `event.target` works here
    // `reader` will not work
    //     because the scope of this function does not include `reader`
]

这是一个人为的例子,但问题可能体现在你的回调和读者可变声明在不同的范围内,或者单个函数充当多个读者的事件监听器的任何实际情况中(例如{{1} }})。

至于使用reader1.onload = readText; reader2.onload = readText;this,这似乎纯属个人偏好。