Spawning game objects

I am trying to make a game where the main character re-spawns after it is destroyed if it has enough lives left. The re-spawning works, but the problem I am running into is that the clone that is created does not have any properties of the original (rigidbody, script isn’t attached, etc). How can I fix this?
this is what I have:

void OnCollisionEnter2D(Collision2D hit) //hit is a variable
{
if (hit.collider.GetType () == typeof(PolygonCollider2D)) {
print (“i’m dead”);
Destroy (gameObject);
lives = (lives - 1);
livesOut.text = "Lives: " + lives;
if (lives > 0) {
whereToSpawn = new Vector2 (63, 544); //random x and y where the game object is located
Instantiate (gameObject, whereToSpawn, Quaternion.identity);
}

I’d fix it by not destroying and instantiating the player at all. I’d just subtract 1 life, do whatever death animation you’re probably doing on destroy right now, and then move the player to the new location.