I'd like to assign a Javascript Class instance to an HTML element using this method: https://stackoverflow.com/a/1402782/13107219
This allows me to access the class instance later using the following (which is good)
var class_instance = document.getElementById('my_element').my_class;
However, I'd also like to be able to access the HTML element from within the Javascript class instance
var class_instance=new MY_CLASS(); // class constructor creates corresponding HTML element and stores it in property 'html_element'
class_instance.html_element.innerHTML='I can access and update the HTML easily';
So, ideally, I'd like to be able to have the following 2 lines in the class constructor:
this.html_element=this.create_html_element(); // create the html element for the box
this.html_element.my_obj=this; // reference this class instance with the HTML element
Questions:
Is my proposed technique going to create a circular reference, memory leak, or cause issues?
Is there a better technique (no JQuery, please) to set it up so I can: 1. Access the class instance having only the HTML element ID and 2. Access the HTML element having only the class instance available?
Full Example
var BOX = class { //class to make a box
        
            constructor(my_prop, color) { // initialize the JS Object
                this.my_prop=my_prop; // define a property
                this.color=color;
                /* ******  My Question:  Are the following 2 lines OK to use? ****** */ 
                this.html_element=this.create_html_element(); // create the html element for the box
                this.html_element.my_obj=this;
  
            }
            create_html_element() { //generate the HTML for the box element and append it to the body
  
                var ele=document.createElement('DIV'); // create html element
                ele.style.border='1px solid #'+this.color; ele.className='box';// style the element border
                document.body.appendChild(ele); // put the element on the screen
                ele.onclick=this._onclick;  //make something happen when the box element is clicked
                return ele; // return the element so we can use 'this.html_element' to reference this element later
            }
            _onclick() { //Do this when the box is clicked
                /* 
                   Note: 'this' here refers to the event.target HTML element (not the JS object)
                   Could use bind to bind to the javascript object instead, but find it more intuitive to have the _onclick reference the html element that was clicked
                   Reference: https://stackoverflow.com/questions/41591250/html-element-attached-to-js-object
                */
                 console.log(this.my_obj.my_prop);
             }
         }
         function makeBoxes(){
             var box1=new BOX('Box 1','c00');
             var box2=new BOX('Box 2','0c0');
             var box3=new BOX('Box 3','00c');
             /* ****** I'd like to be able to use the lines below ****** */
             box1.html_element.innerHTML='Box 1';
             box1.my_prop="I've changed!";
             /* ******* Is it a problem that the following code can be used to access the same element?  Obviously, I wouldn't do the following line, but I didn't know if even being able to use it indicates a circular reference that might cause bloat, memory leaks, any other potential issues? ****** */
             var same_element = box1.html_element.my_obj.html_element.my_obj.html_element.my_obj.html_element;       
         }.box{
width:15vw;
height:20vh;
margin:2vh;
display:inline-block;
vertical-align:middle;
}
.btn{
display:block;
}<html>
  <body>
      <div class='btn' onclick='makeBoxes();'>Click to Make Boxes</div>
  </body>
</html> 
    