这是纯粹的好奇心。让我们写一个对象:
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
对象吗?
答案 0 :(得分:4)
somefunction()是否具有对显示的其他属性(res1 / res2)的任何形式的访问权限,因为显示是在闭包内定义的,somefunction()是在闭包之外定义的?
没有
我的意思是它可以仅仅从作为参数传递的nores属性引用整个显示对象吗?
对象的属性与其值之间没有反向关系。找到它们的唯一方法是访问该对象,然后循环遍历它,直到找到匹配为止。
答案 1 :(得分:2)
否,您无法从内部对象获取外部对象。
你不能用javascript中的参考地址“玩”,有一个很好的理由不允许 - 封装 - 你不应该被允许触摸你没有“接收”的东西。
我不知道是否存在可以使用此类内容的语言,也许可能 C
。