@@ -86,6 +86,34 @@ napi_value Has(napi_env env, napi_callback_info info) {
8686 return ret ;
8787}
8888
89+ napi_value HasOwn (napi_env env , napi_callback_info info ) {
90+ size_t argc = 2 ;
91+ napi_value args [2 ];
92+ NAPI_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
93+
94+ NAPI_ASSERT (env , argc == 2 , "Wrong number of arguments" );
95+
96+ napi_valuetype valuetype0 ;
97+ NAPI_CALL (env , napi_typeof (env , args [0 ], & valuetype0 ));
98+
99+ NAPI_ASSERT (env , valuetype0 == napi_object ,
100+ "Wrong type of arguments. Expects an object as first argument." );
101+
102+ // napi_valuetype valuetype1;
103+ // NAPI_CALL(env, napi_typeof(env, args[1], &valuetype1));
104+ //
105+ // NAPI_ASSERT(env, valuetype1 == napi_string || valuetype1 == napi_symbol,
106+ // "Wrong type of arguments. Expects a string or symbol as second.");
107+
108+ bool has_property ;
109+ NAPI_CALL (env , napi_has_own_property (env , args [0 ], args [1 ], & has_property ));
110+
111+ napi_value ret ;
112+ NAPI_CALL (env , napi_get_boolean (env , has_property , & ret ));
113+
114+ return ret ;
115+ }
116+
89117napi_value Delete (napi_env env , napi_callback_info info ) {
90118 size_t argc = 2 ;
91119 napi_value args [2 ];
@@ -196,6 +224,7 @@ void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
196224 DECLARE_NAPI_PROPERTY ("Get" , Get ),
197225 DECLARE_NAPI_PROPERTY ("Set" , Set ),
198226 DECLARE_NAPI_PROPERTY ("Has" , Has ),
227+ DECLARE_NAPI_PROPERTY ("HasOwn" , HasOwn ),
199228 DECLARE_NAPI_PROPERTY ("Delete" , Delete ),
200229 DECLARE_NAPI_PROPERTY ("New" , New ),
201230 DECLARE_NAPI_PROPERTY ("Inflate" , Inflate ),
0 commit comments