這是什麼封閉是要避免的,但我想知道是否有方法來添加一個方法到閉包。基本上我有一個js文件庫,我想通過添加一個新的方法來增加特定的客戶端。我可以添加一個方法到封閉
我有一個名爲庫js文件:
var LIBRARY = (function(){
var name;
return {
setName: function(n) { name = n; }
}());
但對於新客戶,我想給他們一個新的js文件,該文件將只增加庫,添加新的功能:
function(first, last){
name = first + " " + last;
}
雖然我不想修改庫js。有沒有辦法將這個函數追加到LIBRARY中,以便該函數有必要訪問名稱變量?
我是河濱g能夠直接進入而不暴露name變量(雖然setName只暴露了一個setter,但這不是個好主意)。可能不得不走這條路線 – hackerhasid 2010-09-28 17:07:56
@statichippo:這真的是你唯一的選擇,禁止(再次)使用'eval',這只是一個蠕蟲罐。 – 2010-09-28 17:10:59
我甚至沒有考慮評估路徑。 eval離邪惡只有一個字母;) – hackerhasid 2010-10-04 00:50:29