diff options
author | bellard <6490144+bellard@users.noreply.github.com> | 2022-03-06 18:54:27 +0100 |
---|---|---|
committer | bellard <6490144+bellard@users.noreply.github.com> | 2022-03-06 18:54:27 +0100 |
commit | 446099aa9ebd7fcd54d3fdc6f6b25ee8c8c97a7d (patch) | |
tree | 448dd895235c7dc75daf430e2e7d5d496a107e73 /quickjs.c | |
parent | b9f58802dc8d3e6d8dfb65434dee63c7611c05e8 (diff) | |
download | quickjs-446099aa9ebd7fcd54d3fdc6f6b25ee8c8c97a7d.tar.gz quickjs-446099aa9ebd7fcd54d3fdc6f6b25ee8c8c97a7d.zip |
added Object.hasOwn()
Diffstat (limited to 'quickjs.c')
-rw-r--r-- | quickjs.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -36882,6 +36882,32 @@ static JSValue js_object_hasOwnProperty(JSContext *ctx, JSValueConst this_val, return JS_NewBool(ctx, ret); } +static JSValue js_object_hasOwn(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSValue obj; + JSAtom atom; + JSObject *p; + BOOL ret; + + obj = JS_ToObject(ctx, argv[0]); + if (JS_IsException(obj)) + return obj; + atom = JS_ValueToAtom(ctx, argv[1]); + if (unlikely(atom == JS_ATOM_NULL)) { + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; + } + p = JS_VALUE_GET_OBJ(obj); + ret = JS_GetOwnPropertyInternal(ctx, NULL, p, atom); + JS_FreeAtom(ctx, atom); + JS_FreeValue(ctx, obj); + if (ret < 0) + return JS_EXCEPTION; + else + return JS_NewBool(ctx, ret); +} + static JSValue js_object_valueOf(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { @@ -37454,6 +37480,7 @@ static const JSCFunctionListEntry js_object_funcs[] = { //JS_CFUNC_DEF("__getObjectData", 1, js_object___getObjectData ), //JS_CFUNC_DEF("__setObjectData", 2, js_object___setObjectData ), JS_CFUNC_DEF("fromEntries", 1, js_object_fromEntries ), + JS_CFUNC_DEF("hasOwn", 2, js_object_hasOwn ), }; static const JSCFunctionListEntry js_object_proto_funcs[] = { |