If you have a non-standard object(which hasn't been recognized by WR as an object of one of standard classes), you can assign this object to one of standard WR's classes. Then you are able to use all properties of this class and the standard WR's functions to your object.
Understanding an object is like understanding another language, without a set of grammar rules and vocabulary we can not reinterpreted an other language.
WinRUnner is now different, the way that tool understands object their behavior and methods is not magic, it's actually preprogrammed into set of libraries. So when WhinRunner sees a standard objects it know which class it's belongs to (MFC, JFC, SWING) this classes and their behavior implementation is know to winrunner. This object implement an interface that defines a what they communicate with each other what type of common API is used to access them.
Non Standard object could be 3d party library which define different ways of communication and rendering information, they may introduce different properties or methods for that class of objects. Since winrunner have not been introduced to these classes it has no idea on what they are.
Most likely custom objects share similar properties and methods with standard obj.