How to check if a variable is loaded in JavaScript?

后端 未结 10 1689
遇见更好的自我
遇见更好的自我 2021-01-31 04:01

How do I see if a certain object has been loaded, and if not, how can it be loaded, like the following?

if (!isObjectLoaded(someVar)) {
    someVar= loadObject()         


        
相关标签:
10条回答
  • 2021-01-31 04:40
    myObject = myObject || loadObject();
    
    0 讨论(0)
  • 2021-01-31 04:40

    typeof(obj) would return "object" for an object of a class among other possible values.

    0 讨论(0)
  • 2021-01-31 04:41

    You probably want to see if a given object is defined

    Especially if its done in an asynchronous thread with a setTimeout to check when it turns up.

      var generate = function()
      { 
          window.foo = {}; 
      }; 
      var i = 0;
      var detect = function()
      {
         if( typeof window.foo == "undefined" ) 
         {
               alert( "Created!"); 
               clearInterval( i );
         }
       };
       setTimeout( generate, 15000 ); 
       i = setInterval( detect, 100 ); 
    

    should in theory detect when window.foo comes into existance.

    0 讨论(0)
  • 2021-01-31 04:43

    If it is an object then you should just be able to check to see if it is null or undefined and then load it if it is.

    if (myObject === null || myObject === undefined) {
       myObject = loadObject();
    }
    

    Using the typeof function is also an option as it returns the type of the object provided. However, it will return null or undefined if the object has not been loaded so it might boil down a bit to personal preference in regards to readability.

    0 讨论(0)
  • 2021-01-31 04:47

    I'm not sure what you mean by "loaded"... does the variable object exist and simply doesn't have the type you want? In that case, you'll want something like:

    function isObjectType(obj, type) {
        return !!(obj && type && type.prototype && obj.constructor == type.prototype.constructor);
    }
    

    and then use if (isObjectType(object, MyType)) { object = loadObject(); }.

    If object is not populated with anything before your test (ie - typeof object === 'undefined') then you just need:

    if ('undefined' === typeof object) { object = loadObject(); }
    
    0 讨论(0)
  • 2021-01-31 04:47

    If by loaded you mean defined, you can check the type of the variable with the typeof function. HOWEVER typeof has a few quirks, and will identify an Object, an Array, and a null as an object

    alert(typeof(null));
    

    Identifying a null as a defined object would probably cause your program to fail, so check with something like

    if(null !== x && 'object' == typeof(x)){
        alert("Hey, It's an object or an array; good enough!");
    }
    
    0 讨论(0)
提交回复
热议问题