### Method

# JavaScriptCore Value object_define_property_accessor

#### Declaration [src]

    void
    jsc_value_object_define_property_accessor (
      JSCValue* value,
      const char* property_name,
      JSCValuePropertyFlags flags,
      GType property_type,
      GCallback getter,
      GCallback setter,
      gpointer user_data,
      GDestroyNotify destroy_notify
    )

#### Description [src]

Define or modify a property with `property_name` in object referenced by `value`. When the property value is read or set, `getter` and `setter` callbacks will be called. When the property is cleared in the `JSCClass` context, `destroy_notify` is called with `user_data` as parameter. This is equivalent to JavaScript <function>Object.defineProperty()</function> when used with an accessor descriptor.

Note that the value returned by `getter` must be fully transferred. In case of boxed types, you could 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 instance parameter.

Note that `getter` and `setter` are called as functions and not methods, so they don’t receive an instance as first parameter. Use `jsc_class_add_property()` if you want to add property accessor invoked as a method.

#### Parameters

`property_name`

  Type: `const char*`

  The name of the property to define.

  The data is owned by the caller of the method.
  The value is a NUL terminated UTF-8 string.

`flags`

  Type: `JSCValuePropertyFlags`

  `JSCValuePropertyFlags`.

`property_type`

  Type: `GType`

  The `GType` of the property.

`getter`

  Type: `GCallback`

  A `GCallback` to be called to get the property value.

  The argument can be `NULL`.

`setter`

  Type: `GCallback`

  A `GCallback` to be called to set the property value.

  The argument can be `NULL`.

`user_data`

  Type: `gpointer`

  User data to pass to `getter` and `setter`.

  The argument can be `NULL`.
  The data is owned by the caller of the method.

`destroy_notify`

  Type: `GDestroyNotify`

  Destroy notifier for `user_data`.

  The argument can be `NULL`.