We want to remove these ClassOps, see bug 1389510.
I'm attaching a patch that wraps array CData objects in a proxy. The proxy forwards most operations to the target object, but it intercepts the get and set traps to implement the indexed property behavior. CData objects no longer have the getProperty and setProperty ClassOps.
This seems to work and it passes the pretty extensive test_jsctypes.js
The proxy's behavior is not perfect: getOwnPropertyNames, getOwnPropertyDescriptor etc don't return the indexed properties. This is similar to the old behavior though, where these properties only showed up after they had been assigned to, so I don't think this matters too much.