### Method

# JavaScriptCore Class add_property

#### Declaration [src]

    void
    jsc_class_add_property (
      JSCClass* jsc_class,
      const char* name,
      GType property_type,
      GCallback getter,
      GCallback setter,
      gpointer user_data,
      GDestroyNotify destroy_notify
    )

#### Description [src]

Add a property with `name` to `jsc_class`. When the property value needs to be getted, `getter` is called receiving the the class instance as first parameter and `user_data` as last parameter. When the property value needs to be set, `setter` is called receiving the the class instance as first parameter, followed by the value to be set and then `user_data` as the last parameter. When the property is cleared in the `JSCClass` context, `destroy_notify` is called with `user_data` as parameter.

Note that the value returned by `getter` must be transfer full. In case of non-refcounted boxed types, you should use `G_TYPE_POINTER` instead of the actual boxed `GType` to ensure that the instance owned by `JSCClass` is used. If you really want to return a new copy of the boxed type, use #JSC_TYPE_VALUE and return a `JSCValue` created with `jsc_value_new_object()` that receives the copy as the instance parameter.

#### Parameters

`name` | `const char*`
| The property name.
| The data is owned by the caller of the function.
| The value is a NUL terminated UTF-8 string.
`property_type` | `GType`
| The `GType` of the property value.
`getter` | `GCallback`
| A `GCallback` to be called to get the property value.
| The argument can be `NULL`.
`setter` | `GCallback`
| A `GCallback` to be called to set the property value.
| The argument can be `NULL`.
`user_data` | `gpointer`
| User data to pass to `getter` and `setter`.
| The argument can be `NULL`.
| The data is owned by the caller of the function.
`destroy_notify` | `GDestroyNotify`
| Destroy notifier for `user_data`.
| The argument can be `NULL`.