--- title: NPClass slug: NPClass translation_of: Archive/Plugins/Reference/NPClass ---
NPClass 是一个包含着一组函数指针的结构体。这些函数指针所指向的函数是组成NPClass某个实例(例如一个
NPObject)的所有行为
。
struct NPClass { uint32_t structVersion; NPAllocateFunctionPtr allocate; NPDeallocateFunctionPtr deallocate; NPInvalidateFunctionPtr invalidate; NPHasMethodFunctionPtr hasMethod; NPInvokeFunctionPtr invoke; NPInvokeDefaultFunctionPtr invokeDefault; NPHasPropertyFunctionPtr hasProperty; NPGetPropertyFunctionPtr getProperty; NPSetPropertyFunctionPtr setProperty; NPRemovePropertyFunctionPtr removeProperty; NPEnumerationFunctionPtr enumerate; NPConstructFunctionPtr construct; };
structVersion
allocate
NPObject对象的指针。
如果该指针不为空,则将会被NPN_CreateObject()函数调用
, 否则浏览器会调用 malloc()。
这个函数应该分配并且返回能保存创建出来的NPObject对象的存储区域。deallocate
NPN_ReleaseObject()调用。如果这个指针为空,那浏览器
就直接调free()函数。invalidate
deallocate
函数或者free()之前被调用。
任何对失效对象(invalidated object)的操作都会导致未定义的行为。hasMethod
被NPN_HasMethod()调用,用来
判断在给定的NPObject中是否存在某个特定的方法。返回true
如果该方法存在,否则返回false
.invoke
NPN_Invoke()调用,来调用给定NPObject对象中的指定方法。如果调用成功,返回
true,如果任何错误产生则返回
false。
invokeDefault
被NPN_InvokeDefault()
调用,来调用给定NPObject对象中的默认方法(该对象有默认方法的话)。如果调用成功,返回
true,如果任何错误产生则返回
false。
hasProperty
NPN_HasProperty()调用,来检查给定NPObject对象中是否存在某个属性。返回
true如果存在该属性,否则返回
false。
getProperty
NPN_GetProperty()调用,来获取
给定NPObject对象中的某个属性。返回true如果属性获取成功,否则返回
false。
setProperty
NPN_SetProperty()调用,来设置
给定NPObject对象中的某个属性。返回true如果属性设置成功,否则返回
false。
removeProperty
NPN_RemoveProperty()调用,来删除
给定NPObject对象中的某个属性。返回true如果属性删除成功,否则返回
false。
enumerate
NPN_Enumerate
调用。只有当structVersion的值大于等于
NP_CLASS_STRUCT_VERSION_ENUM
(2)时,该指针才有效。construct
NPN_Construct
调用。只有当structVersion的值大于等于
NP_CLASS_STRUCT_VERSION_CTOR
(3),该指针才有效。typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp, NPClass *aClass); typedef void (*NPDeallocateFunctionPtr)(NPObject *npobj); typedef void (*NPInvalidateFunctionPtr)(NPObject *npobj); typedef bool (*NPHasMethodFunctionPtr)(NPObject *npobj, NPIdentifier name); typedef bool (*NPInvokeFunctionPtr)(NPObject *npobj, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result); typedef bool (*NPInvokeDefaultFunctionPtr)(NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant *result); typedef bool (*NPHasPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name); typedef bool (*NPGetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name, NPVariant *result); typedef bool (*NPSetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name, const NPVariant *value); typedef bool (*NPRemovePropertyFunctionPtr)(NPObject *npobj, NPIdentifier name); typedef bool (*NPEnumerationFunctionPtr)(NPObject *npobj, NPIdentifier **value, uint32_t *count); typedef bool (*NPConstructFunctionPtr)(NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant *result);