2017-06-12 62 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]);