'How can I access an instance object from other script?

I have two script: scipt1.js:

(function ($) {
    'use strict';

    var A = function (element, options) {
        this.element = $(element);
     
    };

    A.prototype.update = function update() {}
       
    $.fn.doA = function (option) {
        return this.each(function test() {
                newA = new A(this, options);
            }

           
        });
    };

}(jQuery));

And scipt2.js from incline html:

    $( document ).ready(function(){
                    $('#$this->id').doA($javascriptParameterString);
                    });    

In $( document ).ready(function().. from script2.js, I want to call the function update from scipt1.js after doA executed. Is there anyway I can reference the instance newA and call that function update?



Solution 1:[1]

Use .data to associate the element(s) doA is called on with an instance, and then .data can be used elsewhere to retrieve it.

var A = function(element, options) {
  this.element = $(element);
  this.options = options;
};
$.fn.doA = function(options) {
  return this.each(function test() {
      $(this).data('a', new A(this, options));
  });
};


// Other script:
$(document).ready(function() {
  $('.foo').doA({ property: 'foo' });
  console.log('now iterating over instantiated As:');
  for (const foo of $('.foo')) {
    const a = $(foo).data('a');
    console.log(a.options);
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="foo"></div>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 CertainPerformance