昨天,我问了这个问题:Passing a method for later evaluation并认为它就像传递原型方法一样简单,而不是在访问后立即调用它,将this
重置为Window
。但是,今天我今天遇到了这个代码:
sSharing.shareFileWithGroup( node, groupId, d.resolve, d.reject ); //d is a Angular promise
当shareFileWithGroup在其主体中调用其第3或第4个参数时,它正确调用先前传递给d.then
的任何函数,即传递的方法可以找到它所访问的原始对象。调用原型方法时设置this
的规则究竟是什么?这两种情况似乎不一致。
编辑:我的理解是传递的方法d.resolve/reject
不应该能够调用先前作为.then
的参数传递的函数,但确实如此。我的问题是它是如何做到的?我唯一能想到的是,如果将promises内置到JS中,或者方法实际上并没有使用原型,而是直接放入构造的对象中。