Javascript函数 - 比已经给出的更多

时间:2012-06-19 10:27:39

标签: javascript object closures

这是纯粹的好奇心。让我们写一个对象:

 var display = { res1:{ w:640, h:480 }, res2:{ w:320, h:240 }, nores:{} };

现在从这个对象,我们将nores属性发送给一个函数。由于nores是一个对象,因此somefunction稍后会在display.nores中看到我们所做的更改:

 somefunction(display.nores);

现在问题就在这里。 somefunction()是否具有对display其他属性(res1 / res2)的任何形式的访问权限,因为显示是在闭包内定义的,并且somefunction()已定义在关闭之外?我的意思是它可以仅仅从作为参数传递的display属性引用整个nores对象吗?

2 个答案:

答案 0 :(得分:4)

  

somefunction()是否具有对显示的其他属性(res1 / res2)的任何形式的访问权限,因为显示是在闭包内定义的,somefunction()是在闭包之外定义的?

没有

  

我的意思是它可以仅仅从作为参数传递的nores属性引用整个显示对象吗?

对象的属性与其值之间没有反向关系。找到它们的唯一方法是访问该对象,然后循环遍历它,直到找到匹配为止。

答案 1 :(得分:2)

,您无法从内部对象获取外部对象。

你不能用javascript中的参考地址“玩”,有一个很好的理由不允许 - 封装 - 你不应该被允许触摸你没有“接收”的东西。

我不知道是否存在可以使用此类内容的语言,也许可能 C