0

我想在其中一些函数中创建一个简单易用的 API,但无法将函数绑定到它所属的新范围 IE 中!除了那种疯狂的 eval 废话或用它做疯狂的事情,这让事情变得更加混乱之外,我想不出一种方法来做到这一点。

从概念上讲,我正在失去理智,因为过滤器参数应该在完成回调的上下文中运行。我想这是我的问题过滤器参数不是回调它是一个参数并且应该具有它运行的范围而不是它定义的范围。

有人请告诉我,我只是错过了一些愚蠢的事情。

是否有任何语言支持将 lambda 的范围绑定到调用它的位置而不是定义它的位置?

var scrape = function(selector, filter) {
    jsdom.env({
        html: data,
        src: [ jQuery ],
        done: function(errors, window) {
            var $ = window.$;
            eval('filter=' + filter.toString());
            debugger;
            var entries = $(selector).filter(filter);
            console.log('spo');
            debugger;
        }
    });
};

scrape('p',function(index) {
    debugger;
    if(this.children.length == 3) {
        return $(this.children[0]).is('a') && 
               $(this.children[1]).is('font') && 
               $(this.children[2]).is('span');
    } else {
        return false;
    }
});
4

1 回答 1

0

不完全确定您的代码做了什么,但根据您的描述,您正在搜索$.proxy. 它将回调绑定到特定的上下文。如果你使用下划线,你会看_.bind

文档:http ://api.jquery.com/jQuery.proxy/

于 2012-03-12T10:35:01.203 回答