2009-04-21 126 views
2

在函数中有一种方法可以获取对它进行调用的对象的引用?我在页面上有两个Flash对象的实例,每个都可以通过ExternalInterface调用JS,我无法编写Flash对象来传递不同的ID,因为它是同一个Flash对象的两个实例,所以它在那里JS获取引用哪个函数的一种方法?JS:有没有办法告诉哪个对象叫做函数?

谢谢!

回答

3

当实例不能传递一个ID到Flash对象? (通过查询字符串或参数)。然后你可以在你的JavaScript函数调用中使用该ID。

+0

这是一个好主意。 – 2009-04-21 20:30:13

+0

让我知道它是否有效。我只做过一点点的Flash。 – 2009-04-22 02:10:37

0

arguments.callerFunction.caller但您可能想要重新组织您的代码以避免使用它们。真的有另一种方式来得到你想要的 - 我保证。

编辑:AnthonyWJones指出,你实际上是在寻找this运营商。

关键字指上下文 对象(也称为当前对象)。在 一般情况下,在一种方法中,这是指 的调用对象。

+0

调用者不调用与调用该函数的对象不同的调用当前函数的函数吗? – AnthonyWJones 2009-04-21 14:44:56

+0

好点。调用函数的对象是“this”。 – 2009-04-21 15:52:11

2

我不知道ExternalInterface,但你有没有试过在你的函数执行期间检查this对象?

当然,你总是可以使用闭包。最终你必须给Flash对象一个执行的函数。例如,我有myObj1myObj2,它们采用回调方法fnCallback,但由于某些原因,在执行此功能时并未设置this上下文。因此,我可以这样做: -

function setCallback(obj, fn) 
{ 
    obj.callback = function() {fn.apply(obj, arguments);} 
} 

setCallback(myObj1, fnCallback); 
setCallback(myObj2, fnCallback); 

现在,我可以使用this作为被调用函数的具体对象的引用代码fnCallback。

+0

我不完全确定你的意思,请你详细说明一下吗?你是说JS函数内的“this”是指调用该函数的flash对象吗?谢谢。 – 2009-04-21 20:32:02

+0

任何对象都可以作为'this'上下文提供给函数执行,我不确定这适用于这种情况,因为我没有直接使用ExternalInterface的经验,我的建议是只需简单地给它一个。 – AnthonyWJones 2009-04-22 20:59:50

0

如果您正在寻找一种方法来查找调用函数的非函数元素,则可以考虑使用该事件。当传递一个事件对象时,这是一个非常方便的函数。因此,例如,如果您调用函数“find(event);”,那么函数“find(event)从点击的元素中,找到可以被编码使用这种方法来获得事件对象:

function find(evt){ 
    var clickedObj = getTargetElement(evt); 
    alert(clickedObj.tagName); //alerts "TD" 
} 
相关问题