我想創建一個簡單易用的API到這些函數中,但無法將函數綁定到新的範圍I.E它的範圍!我無法想出一個辦法去做那些瘋狂的胡言亂語,或者做這些讓事情變得更加混亂的瘋狂事情。Javascript lambda範圍和代碼分解
從概念上講,我迷失了我的想法,因爲過濾器參數應該在完成回調的上下文中運行。我想這是我的問題過濾器參數不是一個回調它是一個參數,應該有它的運行範圍,而不是它定義的地方。
有人請告訴我,我只是錯過了一些愚蠢的東西。
是否有任何語言支持將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;
}
});
有沒有辦法在當前範圍內定義任意名稱/訪問局部變量。你可以通過'call' /'apply'或者永久地通過'bind'(所有這些都是函數的方法)來改變this''臨時值 – kirilloid 2012-03-12 10:37:54
我甚至不能這樣做,因爲jQuery在函數中定義了這個。如果可能的話,事情肯定會更加激動人心。 – Prospero 2012-03-12 10:42:58