By default, J2S will overwrite javascript Object.prototype adding methods of java.lang.Object like equals, hashCode, notifyAll, etc, so all created objects are valid java objects. Normally this is fine because you don't have to worry about javascript objects that are not valid java objects.
Nevertheless, in some situations, this default behaviour is not desiderable. For example, if you want to integrate your J2S application with a 3rd party javascript toolkit, there can be compatibilities issues because some javascript toolkits simply don't work with a modified Object.prototype. More, since all javascript objects contains java.lang.Object methods, it is impossible to create a clean javascript object, something really common and required for working with 3rd party javascript toolkits.
Fortunately J2S supports a "native object" mode, in which javascript Object.prototype is not contaminated
explain the problems with native objects and explain j2s.native mode