1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 12:37:40 +00:00

LibJS: Add Object::has_property()

Like Object::has_own_property() but going down the prototype chain.
This commit is contained in:
Linus Groh 2020-04-30 20:03:40 +01:00 committed by Andreas Kling
parent 4cdd802927
commit 62671bea68
2 changed files with 13 additions and 0 deletions

View file

@ -381,6 +381,17 @@ void Object::visit_children(Cell::Visitor& visitor)
visitor.visit(value); visitor.visit(value);
} }
bool Object::has_property(const FlyString& property_name) const
{
const Object* object = this;
while (object) {
if (object->has_own_property(property_name))
return true;
object = object->prototype();
}
return false;
}
bool Object::has_own_property(const FlyString& property_name) const bool Object::has_own_property(const FlyString& property_name) const
{ {
bool ok; bool ok;

View file

@ -96,7 +96,9 @@ public:
void set_prototype(Object*); void set_prototype(Object*);
bool has_prototype(const Object* prototype) const; bool has_prototype(const Object* prototype) const;
bool has_property(const FlyString& property_name) const;
bool has_own_property(const FlyString& property_name) const; bool has_own_property(const FlyString& property_name) const;
enum class PreferredType { enum class PreferredType {
Default, Default,
String, String,