25

特定のオブジェクトがロードされているかどうかを確認するにはどうすればよいですか。ロードされていない場合は、次のようにどのようにロードできますか?

if (!isObjectLoaded(someVar)) {
    someVar= loadObject();
}
4

10 に答える 10

37

オブジェクトの場合は、nullまたは未定義かどうかを確認し、そうであればロードすることができます。

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

提供されたオブジェクトのタイプを返すtypeof関数を使用することもオプションです。ただし、オブジェクトがロードされていない場合はnull または undefinedが返されるため、読みやすさに関して個人的な好みに少し煮詰める可能性があります。

于 2008-09-18T19:18:07.710 に答える
27
if(typeof(o) != 'object') o = loadObject();
于 2008-09-18T19:16:05.560 に答える
5
myObject = myObject || loadObject();
于 2010-10-31T03:42:21.273 に答える
3

ロードされたということは、定義されていることを意味する場合、 typeof 関数を使用して変数の型を確認できます。ただし、 typeofにはいくつかの癖があり、オブジェクト、配列、およびnullをオブジェクトとして識別します

alert(typeof(null));

null を定義されたオブジェクトとして識別すると、おそらくプログラムが失敗する可能性があるため、次のようなもので確認してください

if(null !== x && 'object' == typeof(x)){
    alert("Hey, It's an object or an array; good enough!");
}
于 2008-09-18T21:13:02.503 に答える
3

「ロード済み」の意味がわかりません...変数objectが存在し、単に必要な型を持っていませんか? その場合、次のようなものが必要になります。

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

を使用しますif (isObjectType(object, MyType)) { object = loadObject(); }

テストの前に何も入力されていない場合object(つまり - typeof object === 'undefined')、必要なのは次のとおりです。

if ('undefined' === typeof object) { object = loadObject(); }
于 2008-09-18T19:20:43.613 に答える
3

おそらく、特定のオブジェクトが定義されているかどうかを確認したいでしょう

特に、setTimeout を使用して非同期スレッドで実行され、いつ起動するかを確認する場合。

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

理論的には、いつ window.foo が存在するかを検出する必要があります。

于 2008-09-18T19:22:12.923 に答える
2

カスタム オブジェクトを検出する場合:

// craete a custom object
function MyObject(){

}

// check if it's the right kind of object
if(!(object instanceof MyObject)){
   object = new MyObject();
}
于 2008-09-18T19:22:14.610 に答える
2

ショートカットを使用することもできますif(obj)

于 2008-09-18T19:22:21.427 に答える
1

typeof(obj)他の可能な値の中でクラスのオブジェクトに対して「object」を返します。

于 2008-09-18T19:15:53.050 に答える
1
if (!("someVar" in window)) {
  someVar = loadObject();
}

JS が以前にグローバルに割り当てられているsomeVarか、最上位の を宣言しているかどうかがわかりますvar someVar

ロードされた値が であっても、それは機能しますundefined

于 2012-09-23T00:02:02.100 に答える