我有這樣一段代碼:String.replace;通過函數的結果問題更換
var myObj = function() {
this.complex = function (text) { /* long piece of code */ }
this.parse(text) {
return text.replace(/valid_pattern/gi, function ($1) { return this.complex($1); });
}
}
當然主叫this.complex($ 1)不會做的伎倆,因爲我在匿名函數的範圍很。我無法重新確定使用.call(this)聲明的匿名函數,因爲在這種情況下,我將丟失傳遞給函數的參數String.replace。
到目前爲止,我正在使用對象的具體實例。這是我的解決方案:
var instance = new myObj;
var myObj = function() {
this.complex = function (text) { /* long piece of code */ }
this.parse(text) {
return text.replace(/valid_pattern/gi, function ($1) { return instance.complex($1); });
}
}
到目前爲止,它是足夠我的需要,但我想知道是否有任何通用的解決方案這個問題。到目前爲止,我唯一的想法是這樣的:
function ($1) { return (new myObj).complex($1); }
......它遭受嚴重的性能問題。任何想法將不勝感激。
- D.
P. S.對不起,我的英語不是我的第一語言。
您的代碼是沒有意義的! 「解析」是否意味着一個功能? – James 2009-01-08 17:09:24