How can i Instantiate something that isn’t in Hierarchy (otherwise, the object is located inside the Prefabs folder, in the assets) without using a public GameObject variable to do a reference to the Object?
Put that prefab in the Resources folder:
GameObject myObj = (GameObject) Resources.Load("prefabname");
GameObject newObj = (GameObject) Instantiate(myObj,myObj.transform.position,myObj.transform.rotation);
More here: Unity - Scripting API: Resources