0
在javascript中,我知道我們可以觀察屬性更改,但可以觀看函數嗎?看着一個函數
如果我有這樣的計算結果爲boolen功能
function eval(value) {
return value == 1;
}
這將有可能持續評估這個功能直到真的嗎?
我知道setTimeout可以工作,但這似乎是一個黑客。有沒有更好的辦法?
在javascript中,我知道我們可以觀察屬性更改,但可以觀看函數嗎?看着一個函數
如果我有這樣的計算結果爲boolen功能
function eval(value) {
return value == 1;
}
這將有可能持續評估這個功能直到真的嗎?
我知道setTimeout可以工作,但這似乎是一個黑客。有沒有更好的辦法?
有兩種主要可能的方式,第一種是你的,setTimeout。第二個是的setInterval:
var checkEval = setInterval(function(){eval(value)},1000);
而且你可以用它結束:
clearInterval(checkEval);
用包裝材料
function something(){
return value==1;
}
(function(window){
var oldSomething = window.something;
window.something = function(){
var result = oldSomething.apply(null,arguments);
if(result===true){
//do what you need
}
return result;
};
})(window);
這是唯一的辦法替代的作用。 –
*「...可以觀看一個功能?」*觀看它做什麼?你期望*函數*改變,或者它的返回值? (例如,因爲它的返回值是基於它關閉的東西)。 –
不確定你的意思,也許你應該更具體或提供一個用例。有一些框架可以像「觀看」函數/變量值那樣提供角度和基因敲除。你也可以看看[lodash](http://lodash.com/docs#compact)函數部分。它可能會有幫助。 – haki