Implement the core of Proxy object (#3562)
- Internal routines of the of the proxy object are unimplemented - For-in enumerate with proxy target is currently not supported JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
+115
-6
@@ -70,6 +70,7 @@ Possible compile time enabled feature types:
|
||||
- JERRY_FEATURE_LOGGING - logging
|
||||
- JERRY_FEATURE_SYMBOL - symbol support
|
||||
- JERRY_FEATURE_DATAVIEW - DataView support
|
||||
- JERRY_FEATURE_PROXY - Proxy support
|
||||
|
||||
*New in version 2.0*.
|
||||
|
||||
@@ -1865,6 +1866,55 @@ jerry_value_is_promise (const jerry_value_t value)
|
||||
- [jerry_create_promise](#jerry_create_promise)
|
||||
|
||||
|
||||
## jerry_value_is_proxy
|
||||
|
||||
**Summary**
|
||||
|
||||
Returns whether the given `jerry_value_t` is a proxy value.
|
||||
|
||||
*Notes*:
|
||||
- This API depends on a build option (`JERRY_ES2015_BUILTIN_PROXY`) and can be checked
|
||||
in runtime with the `JERRY_FEATURE_PROXY` feature enum value,
|
||||
see: [jerry_is_feature_enabled](#jerry_is_feature_enabled).
|
||||
- The ES2015-subset profile enables this by default.
|
||||
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
bool
|
||||
jerry_value_is_proxy (const jerry_value_t value)
|
||||
```
|
||||
|
||||
- `value` - api value
|
||||
- return value
|
||||
- true, if the given `jerry_value_t` is a proxy object
|
||||
- false, otherwise
|
||||
|
||||
**Example**
|
||||
|
||||
*New in version [next_version]*.
|
||||
|
||||
```c
|
||||
{
|
||||
jerry_value_t value;
|
||||
... // create or acquire value
|
||||
|
||||
if (jerry_value_is_proxy (value))
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
jerry_release_value (value);
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_release_value](#jerry_release_value)
|
||||
- [jerry_create_proxy](#jerry_create_proxy)
|
||||
|
||||
|
||||
## jerry_value_is_string
|
||||
|
||||
**Summary**
|
||||
@@ -4212,6 +4262,65 @@ jerry_create_promise (void)
|
||||
- [jerry_release_value](#jerry_release_value)
|
||||
|
||||
|
||||
## jerry_create_proxy
|
||||
|
||||
**Summary**
|
||||
|
||||
Create a new Proxy object with the given target and handler.
|
||||
|
||||
*Note*:
|
||||
- This API depends on the ES2015-subset profile.
|
||||
- Returned value must be freed with [jerry_release_value](#jerry_release_value)
|
||||
when it is no longer needed.
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
jerry_value_t
|
||||
jerry_create_proxy (const jerry_value_t target,
|
||||
const jerry_value_t handler)
|
||||
```
|
||||
|
||||
- `target` - proxy target
|
||||
- `handler` - proxy handler
|
||||
- return thrown error - if the Proxy construction fails
|
||||
value of the newly created proxy object - otherwise
|
||||
|
||||
**Example**
|
||||
|
||||
*New in version [next_version]*.
|
||||
|
||||
[doctest]: # ()
|
||||
|
||||
```c
|
||||
#include "jerryscript.h"
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
jerry_init (JERRY_INIT_EMPTY);
|
||||
|
||||
jerry_value_t target = jerry_create_object ();
|
||||
jerry_value_t handler = jerry_create_object ();
|
||||
jerry_value_t proxy = jerry_create_proxy (target, handler);
|
||||
|
||||
jerry_release_value (target);
|
||||
jerry_release_value (handler);
|
||||
|
||||
// usage of the proxy
|
||||
|
||||
jerry_release_value (proxy);
|
||||
|
||||
jerry_cleanup ();
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_value_is_proxy](#jerry_value_is_proxy)
|
||||
- [jerry_release_value](#jerry_release_value)
|
||||
|
||||
|
||||
## jerry_create_string
|
||||
|
||||
**Summary**
|
||||
@@ -4746,9 +4855,9 @@ jerry_has_property (const jerry_value_t obj_val,
|
||||
|
||||
- `obj_val` - object value
|
||||
- `prop_name_val` - property name
|
||||
- return value - JavaScript boolean value that evaluates to
|
||||
- true, if the property exists
|
||||
- false, otherwise
|
||||
- return value - JavaScript value that evaluates to
|
||||
- raised error - if the operation fail
|
||||
- true/false API value - depend on whether the property exists
|
||||
|
||||
*Changed in version 2.0*: The return value type is now a JavaScript value and not a primitive boolean value.
|
||||
|
||||
@@ -4805,9 +4914,9 @@ jerry_has_own_property (const jerry_value_t obj_val,
|
||||
|
||||
- `obj_val` - object value
|
||||
- `prop_name_val` - property name
|
||||
- return value - JavaScript boolean value that evaluates to
|
||||
- true, if the property exists
|
||||
- false, otherwise
|
||||
- return value - JavaScript value that evaluates to
|
||||
- raised error - if the operation fails
|
||||
- true/false API value - depend on whether the property exists
|
||||
|
||||
*Changed in version 2.0*: The return value type is now a JavaScript value and not a primitive boolean value.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user