繁体   English   中英

用Javascript获取用户定义的对象

[英]Get a user-defined object in Javascript

我有一个脚本可以创建用户定义的对象,如下所示:

obj = new Tree();

该对象始终存在并与用户进行交互。

我想在页面上创建一个按钮,如果按下该按钮,则应检索该对象,对该对象进行一些更改并调用一些方法。

如果这是一个DOM对象,则可以使用getElementById()或getElementByTagName()等中的任何一个。但是,此对象是在脚本中创建的,因此我需要在用户干预的另一部分中对其进行访问。 此外,使对象成为全局对象不是一种选择。 有人知道怎么做吗?

如果要在与所需对象不同的范围内定义对象,则可以将对象附加到window 这应该使其成为“全局”。 尽管我强烈建议您修改范围,以便var obj存在于需要的地方,而不是其他任何地方。

window.myObj = new Tree();

您将需要使事件处理功能的某些部分可访问该对象。 因此,虽然使对象本身成为全局对象不是一个选择(这是一个好举动),但是大概有一些顶级对象对于您的应用程序页面是全局的? 诸如名称空间对象或OurPageScript对象之类的东西? 在这种情况下,将树设置为该对象的属性将允许事件处理程序稍后将其取消引用。

如果您绝对不能从页面的任何位置访问任何变量,那么事情会变得更加棘手。 在这种情况下,根据定义,您将需要为事件处理程序提供对您的对象的引用(因为它们将无法自行获取)。 我想到的唯一方法是每次对象更改时都重写处理程序。 将它们设置为包含该对象的闭包,并以该对象作为参数调用实际的处理程序。

一个中间立场是通过声明所有事件处理程序将在定义了var_tree的闭包环境中被调用来给出全局变量的外观 这样,您就不需要实际更改处理程序,只需在对象更改时将它们重新包装在适当的闭包中即可。

(我想您的问题仅是关于访问对象的;处理程序拥有此权限后,他们可以对其进行修改并调用方法,而不必再作任何处理了。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM