Each object in database has its own object_id.
We can find the listing of objects and their object_ids either in sys.objects, or in view for specific types (sys.tables, sys.key_contraints, ... ).
Now my question is do indices have their own object_ids? From what I have found it seems not. If not, then why not? It looks like any other object (PK,FK, ... ) to me. Even default constraints have their own object_id.
Thanks for clarifications. This is "internals" question, I am not trying to achieve anything in particular, I just want to understand why things are as they are.
Indexes are unique on (object_id, index_id). That is all of the indexes for a given table will have the same object_id in sys.indexes, but will have a different index_id.