JSONPath-Plus / JSONPath

A fork of JSONPath from http://goessner.net/articles/JsonPath/
Other
958 stars 169 forks source link

Use keyword in instead of hasOwnProperty to check if property exists #174

Open ksimple opened 2 years ago

ksimple commented 2 years ago

Describe the bug

hasOwnProperty does not behave as the same as keyword in, it doesn't check the inheritance of property and doesn't check if propety whichi is in prototype

Code sample or steps to reproduce

// Code that reproduces problem here

function target() { this.key1 = 1; }

target.prototype.key2 = 2;

let obj = new target();

console.log(JSONPath({ path: '$.key1', json: obj })); console.log(JSONPath({ path: '$.key2', json: obj }));

Console error or logs

[ 1 ] []

Expected behavior

[ 1 ] [ 2 ]

Expected result

Environment (IMPORTANT)

Desktop**

Additional context

brettz9 commented 1 year ago

I think this should only be supported by opt-in configuration. Inheritance may more often be used to enhance an object without intending those methods to be used as data.