JS:有没有办法告诉哪个对象叫做函数?
在函数中有一种方法可以获取对它进行调用的对象的引用?我在页面上有两个Flash对象的实例,每个都可以通过ExternalInterface调用JS,我无法编写Flash对象来传递不同的ID,因为它是同一个Flash对象的两个实例,所以它在那里JS获取引用哪个函数的一种方法?JS:有没有办法告诉哪个对象叫做函数?
谢谢!
当实例不能传递一个ID到Flash对象? (通过查询字符串或参数)。然后你可以在你的JavaScript函数调用中使用该ID。
arguments.caller或Function.caller但您可能想要重新组织您的代码以避免使用它们。真的有另一种方式来得到你想要的 - 我保证。
编辑:AnthonyWJones指出,你实际上是在寻找this运营商。
的此关键字指上下文 对象(也称为当前对象)。在 一般情况下,在一种方法中,这是指 的调用对象。
调用者不调用与调用该函数的对象不同的调用当前函数的函数吗? – AnthonyWJones 2009-04-21 14:44:56
好点。调用函数的对象是“this”。 – 2009-04-21 15:52:11
我不知道ExternalInterface,但你有没有试过在你的函数执行期间检查this
对象?
当然,你总是可以使用闭包。最终你必须给Flash对象一个执行的函数。例如,我有myObj1
和myObj2
,它们采用回调方法fnCallback
,但由于某些原因,在执行此功能时并未设置this
上下文。因此,我可以这样做: -
function setCallback(obj, fn)
{
obj.callback = function() {fn.apply(obj, arguments);}
}
setCallback(myObj1, fnCallback);
setCallback(myObj2, fnCallback);
现在,我可以使用this
作为被调用函数的具体对象的引用代码fnCallback。
我不完全确定你的意思,请你详细说明一下吗?你是说JS函数内的“this”是指调用该函数的flash对象吗?谢谢。 – 2009-04-21 20:32:02
任何对象都可以作为'this'上下文提供给函数执行,我不确定这适用于这种情况,因为我没有直接使用ExternalInterface的经验,我的建议是只需简单地给它一个。 – AnthonyWJones 2009-04-22 20:59:50
如果您正在寻找一种方法来查找调用函数的非函数元素,则可以考虑使用该事件。当传递一个事件对象时,这是一个非常方便的函数。因此,例如,如果您调用函数“find(event);”,那么函数“find(event)从点击的元素中,找到可以被编码使用这种方法来获得事件对象:
function find(evt){
var clickedObj = getTargetElement(evt);
alert(clickedObj.tagName); //alerts "TD"
}
这是一个好主意。 – 2009-04-21 20:30:13
让我知道它是否有效。我只做过一点点的Flash。 – 2009-04-22 02:10:37