/* * Copyright (c) 2020, Linus Groh #include #include namespace JS { TypedArrayPrototype::TypedArrayPrototype(GlobalObject& global_object) : Object(*global_object.object_prototype()) { } void TypedArrayPrototype::initialize(GlobalObject& object) { auto& vm = this->vm(); Object::initialize(object); // FIXME: This should be an accessor property define_native_property(vm.names.length, length_getter, nullptr, Attribute::Configurable); } TypedArrayPrototype::~TypedArrayPrototype() { } static TypedArrayBase* typed_array_from(VM& vm, GlobalObject& global_object) { auto* this_object = vm.this_value(global_object).to_object(global_object); if (!this_object) return nullptr; if (!this_object->is_typed_array()) { vm.throw_exception(global_object, ErrorType::NotA, "TypedArray"); return nullptr; } return static_cast(this_object); } JS_DEFINE_NATIVE_GETTER(TypedArrayPrototype::length_getter) { auto typed_array = typed_array_from(vm, global_object); if (!typed_array) return {}; return Value(typed_array->length()); } }