--- title: NPObject slug: NPObject translation_of: Archive/Plugins/Reference/NPObject ---
NPObject
是个包含着一个指向 NPClass
的指针,和一个整型的引用计数,还有可能的特定成员的实现(特定插件,或者特定的浏览器)的结构体。
NPObject
是用来展示被插件或者浏览器通过这些API暴露出来的对象的类型。浏览器通过这些API来暴露他们的窗口对象和其他可以通过它来获取的东西。
NPObject
s 是有引用计数的对象, 所以调用者必须谨慎地释放他们的引用. Mozilla 提供了 NPN_CreateObject()
, NPN_RetainObject()
, NPN_ReleaseObject()
, 和 NPN_ReleaseVariantValue()这些函数来增加引用技术和进行常规的所有权的管理。
NPObject
的行为是通过调用 NPClass 中定义的一组回调函数来实现的
.
struct NPObject { NPClass *_class; uint32_t referenceCount; /* * Additional space may be allocated here by types of NPObjects */ };
_class
NPClass
的成员的指针.referenceCount
NPN_CreateObject()
NPN_RetainObject()
NPN_ReleaseObject()
NPN_Invoke()
NPN_InvokeDefault()
NPN_Evaluate()
NPN_GetProperty()
NPN_SetProperty()
NPN_RemoveProperty()
NPN_HasProperty()
NPN_HasMethod()
NPN_SetException()