From 77bd81595d07fd1aee75470aa1b5944337294a34 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Mon, 29 May 2023 22:47:26 +0200 Subject: [PATCH] Issue #2256 - Implement Object.hasOwn(object, property) This is a convenience access function to hasOwnProperty. Trivial, self-hosted implementation providing the interface to the already existing hasOwnProperty cpp function with additional toObject for spec compliance. Resolves #2256 --- js/src/builtin/Object.cpp | 1 + js/src/builtin/Object.js | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/js/src/builtin/Object.cpp b/js/src/builtin/Object.cpp index 70a21079c0..5221afb617 100644 --- a/js/src/builtin/Object.cpp +++ b/js/src/builtin/Object.cpp @@ -1240,6 +1240,7 @@ static const JSFunctionSpec object_static_methods[] = { JS_FN("seal", obj_seal, 1, 0), JS_FN("isSealed", obj_isSealed, 1, 0), JS_SELF_HOSTED_FN("fromEntries", "ObjectFromEntries", 1, 0), + JS_SELF_HOSTED_FN("hasOwn", "ObjectHasOwn", 2, 0), JS_FS_END }; diff --git a/js/src/builtin/Object.js b/js/src/builtin/Object.js index c4739037e3..59d4807317 100644 --- a/js/src/builtin/Object.js +++ b/js/src/builtin/Object.js @@ -220,3 +220,12 @@ function ObjectFromEntries(iter) { return obj; } + +// Proposal https://github.com/tc39/proposal-accessible-object-hasownproperty +// Object.hasOwn (Object, Property) +function ObjectHasOwn(O, P) { + // Step 1. + var obj = ToObject(O); + // Step 2-3. + return callFunction(std_Object_hasOwnProperty, obj, P); +}