I implemented a private name patch for FF, that works roughly like this:
var name = Name();
obj[name] = foo;
These names are not enumerated and there is no way to get to them without having access to the name instance. This might be more efficient than weak maps.