Instantiate

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