【发布时间】:2012-10-24 20:19:30
【问题描述】:
我在一个类中有以下函数:
MyClass.prototype.myFunction = function(item, args)
{
console.log(this);
}
此函数是从我无权更改的外部库调用的。当它被调用时,控制台将“this”记录为窗口对象,而不是实际的实例对象。在搜索 stackoverflow 后,我发现了这句话:
这是根据方法的调用方式设置的,而不是根据方法的编写方式。因此对于 obj.method(),这将在 method() 中设置为 obj。对于 obj.method.call(x),method() 内部的 this 将设置为 x。它由它的调用方式决定。这也意味着如果你将它作为回调传递给例如onclick,这将被设置为全局窗口对象,而不是您所期望的。
我假设这是正在发生的事情,我无法更改它的调用方式。我的问题是,不管它是如何被调用的,是否无论如何都要获取对象的实例?
【问题讨论】:
-
如果可以的话,使用“new”关键字来实例化类。
标签: javascript prototypejs this prototype function-prototypes