2017-06-12 64 views
1

當前正在與代理進行一些工作,這些代理要求將所述代理存儲在數組中,然後在調用某個函數時從該數組訪問該代理。有關功能的作用是將對象的價值重新分配給完全不同的東西。 即:代理對象不被重新分配JavaScript

function proxChange(proxies, index, val) { 
    proxies[index] = val; 
} 

var a = new Proxy({}, {//Handler stuff}); 
var proxies = []; 
proxies.push(a); 
proxChange(proxies, 0, 2); 

從理論上講,a現在應該僅僅是2,但是,它仍然是原來的代理。但有意思的是,如果我爲代理人的房產分配一個值,即:proxies[index]['prop'] = val,那麼當您檢查a時,會顯示房產分配。

任何人都可以理解這裏發生了什麼?

+0

請加* 「處理程序的東西」 *,以及你希望與什麼建築。 –

+0

我不相信「處理程序的東西」是相關的,因爲如果在'a'實例化之後立即發生重新分配,則值重新分配罰款。 – dbr

回答

0

您只需將值分配給數組的元素。

function proxChange(proxies, index, val) { 
 
    proxies[index] = val; 
 
} 
 

 
var a = new Proxy({}, {}); 
 
var proxies = []; 
 
proxies.push(a); 
 
proxChange(proxies, 0, 2); 
 

 
console.log(typeof a, a); 
 
console.log(typeof proxies[0], proxies[0]);