I am using the following logic to get the i18n string of the given key.
export function i18n(key) {
if (entries.hasOwnProperty(key)) {
return entries[k
You can access it via Object.prototype:
Object.prototype.hasOwnProperty.call(obj, prop);
That should be safer, because
Object.prototypeObject.prototype, the hasOwnProperty method could be shadowed by something else.Of course, the code above assumes that
Object has not been shadowed or redefinedObject.prototype.hasOwnProperty has not been redefinedcall own property has been added to Object.prototype.hasOwnPropertyFunction.prototype.call has not been redefinedIf any of these does not hold, attempting to code in a safer way, you could have broken your code!
Another approach which does not need call would be
!!Object.getOwnPropertyDescriptor(obj, prop);
It seems like this would also work:
key in entries
since that will return a boolean on whether or not the key exists inside the object?
I hope I won't get downvoted for this, probably will, but !
var a = {b: "I'm here"}
if (a["b"]) { console.log(a["b"]) }
if (a["c"]) { console.log("Never going to happen") }
Has, insofar, never broken my code
For your specific case, the following examples shall work:
if(Object.prototype.hasOwnProperty.call(entries, "key")) {
//rest of the code
}
OR
if(Object.prototype.isPrototypeOf.call(entries, key)) {
//rest of the code
}
OR
if({}.propertyIsEnumerable.call(entries, "key")) {
//rest of the code
}