showproperties has some partner functions too - getproperty, setproperty, isproperty and hasproperty. So you can say, theprops = getpropnames obj, then iterate over that array of names for your source object, store the properties and their values in arrays - then do the same for the target and check if isproperty obj…
You can also use the result (array) of showProperties (there's also showPropNames or something) to hack up an execute() loop so you wouldn't need to manually copy everything.