解释"这个"指着

时间:2014-10-19 10:00:04

标签: javascript ajax

我正在使用Chrome扩展程序教程(完整代码如下)。我不明白这一点,这与requestKittens方法的第3行有关

        req.onload = this.showPhotos_.bind(this);

和showPhotos方法的第1行:

        var kittens = e.target.responseXML.querySelectorAll('photo');

我试图了解e.target.responseXML如何指向请求的响应XML。这就是我到目前为止的想法:在调用此函数的行中(requestKittens()的第3行),this指向kittenGenerator对象,这意味着{{1} }被绑定为kittenGenerator的第一个参数。所以showPhotos()中的参数e应为showPhotos(),对吧?

如果这是真的,那么kittenGenerator的第一行......

showPhotos()

...说var kittens = e.target.responseXML.querySelectorAll('photo'); 有一个属性kittenGenerator。但是我在Chrome控制台中检查过它并没有 - 所以我的逻辑出现了错误。有人能帮忙吗?

target

1 个答案:

答案 0 :(得分:0)

bind的第一个参数定义了部分应用的上下文。

req.onload = this.showPhotos_.bind(this);

有效,因为XMLHttpRequest使用event作为其onload处理程序的第一个参数。 e.target来自哪里。

为了给出一个简单的bind示例,请考虑以下内容:

function add(a, b) {
    return a + b;
}

var addTwo = add.bind(null, 2);
addTwo(10); // yields 12

如果为bind定义上下文(即除null之外的其他内容),则可以使用函数中的this来访问该上下文。