Not really sure exactly how you plan to save and load all the data, but as far as creating inheritances in Javascript, just go with classes.
Prototype inheritance (and everything surrounding it) is legacy at this point. Classes will do the same (and a few extra things) and are much easier on the eye.
One thing to note is that, even though prototypes are legacy, they are fully supported, so you can use them if the opportunity arises. If you are still figuring things out though, just go with classes they will likely cover 99% of the cases.
Depending on your needs you might be able to get away with something easier though.
If your data objects don't have nested properties (properties which are objects or arrays with more data in them), you can rather easily use Object.assing to create a new object with the properties from a list objects.
Object.assign(
// the new empty object were all the properties will be applied
{},
// The first source object to copy properties from
{
x: 0,
y: 1,
name: "foo"
},
// The second source object to copy properties from
{
name: "bar"
damage: 5
}
// As many source objects as needed can be added
);
Something like that, will create a new object that looks like this:
{
x: 0,
y: 1,
name: "bar",
damage: 5
}
The properties of the first source object are copied into the target (first empty object), then the properties of the second source objects are applied onto it, any existing properties are overwritten and new ones are added.
Using this approach you can allow the player to select a base item, then a specific one, merge them and the result becomes the new item.