Frage

Wie kann ich sehen, ob ein bestimmtes Objekt geladen ist, und wenn nicht, wie kann er geladen werden, wie die folgende?

if (!isObjectLoaded(someVar)) {
    someVar= loadObject();
}
War es hilfreich?

Lösung

Wenn es sich um ein Objekt, dann sollten Sie nur in der Lage sein zu überprüfen, um zu sehen, ob es ist null oder undefiniert und dann laden wenn es ist.

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

Mit dem typeof Funktion ist auch eine Option, wie es die Art der Erträge Objekt zur Verfügung gestellt. Allerdings wird es zurückgeben null oder nicht definiert , wenn das Objekt nicht geladen wurde, so könnte es kochen ein wenig auf die persönlichen Vorlieben in Bezug auf Lesbarkeit nach unten.

Andere Tipps

if(typeof(o) != 'object') o = loadObject();
myObject = myObject || loadObject();

Ich bin mir nicht sicher, was Sie durch „geladen“ bedeutet ... nicht die Variable object existieren und haben einfach nicht die Art Sie wollen? In diesem Fall sollten Sie so etwas wie:

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

und verwenden Sie dann if (isObjectType(object, MyType)) { object = loadObject(); }.

Wenn object nicht mit etwas, bevor Sie Ihren Test ausgefüllt ist (dh - typeof object === 'undefined'), dann brauchen Sie nur:

if ('undefined' === typeof object) { object = loadObject(); }

Sie wollen wahrscheinlich sehen, ob ein bestimmtes Objekt ist definiert

Vor allem, wenn seine in einem asynchronen Thread mit einer SetTimeout getan zu überprüfen, wenn es sich dreht.

  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 ); 

sollte in der Theorie erkennen, wenn window.foo in existance kommt.

Wenn durch geladene Sie definiert bedeuten, können Sie den Typ der Variablen mit der typeof Funktion überprüfen. JEDOCH typeof hat ein paar Macken, und ein Objekt, ein Array, und ein null als Objekt

identifizieren
alert(typeof(null));

würde wahrscheinlich eine Null als definierte Objekt Identifizierung führt, dass Ihr Programm zum Scheitern verurteilt, so überprüfen Sie mit so etwas wie

if(null !== x && 'object' == typeof(x)){
    alert("Hey, It's an object or an array; good enough!");
}

Sie können auch nur eine Verknüpfung if(obj) verwenden

Wenn Sie ein benutzerdefiniertes Objekt erkennen:

// craete a custom object
function MyObject(){

}

// check if it's the right kind of object
if(!(object instanceof MyObject)){
   object = new MyObject();
}

typeof(obj) zurückkehren würde „Objekt“ für ein Objekt einer Klasse unter anderen möglichen Werten.

if (!("someVar" in window)) {
  someVar = loadObject();
}

werden Ihnen sagen, ob irgendein JS zuvor den globalen someVar zugewiesen hat oder erklärte ein Top-Level var someVar.

Das funktioniert sogar, wenn der geladene Wert ist undefined.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top