特定のオブジェクトがロードされているかどうかを確認するにはどうすればよいですか。ロードされていない場合は、次のようにどのようにロードできますか?
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
特定のオブジェクトがロードされているかどうかを確認するにはどうすればよいですか。ロードされていない場合は、次のようにどのようにロードできますか?
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
オブジェクトの場合は、nullまたは未定義かどうかを確認し、そうであればロードすることができます。
if (myObject === null || myObject === undefined) {
myObject = loadObject();
}
提供されたオブジェクトのタイプを返すtypeof関数を使用することもオプションです。ただし、オブジェクトがロードされていない場合はnull または undefinedが返されるため、読みやすさに関して個人的な好みに少し煮詰める可能性があります。
if(typeof(o) != 'object') o = loadObject();
myObject = myObject || loadObject();
ロードされたということは、定義されていることを意味する場合、 typeof 関数を使用して変数の型を確認できます。ただし、 typeofにはいくつかの癖があり、オブジェクト、配列、およびnullをオブジェクトとして識別します
alert(typeof(null));
null を定義されたオブジェクトとして識別すると、おそらくプログラムが失敗する可能性があるため、次のようなもので確認してください
if(null !== x && 'object' == typeof(x)){
alert("Hey, It's an object or an array; good enough!");
}
「ロード済み」の意味がわかりません...変数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(); }
おそらく、特定のオブジェクトが定義されているかどうかを確認したいでしょう
特に、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 が存在するかを検出する必要があります。
カスタム オブジェクトを検出する場合:
// craete a custom object
function MyObject(){
}
// check if it's the right kind of object
if(!(object instanceof MyObject)){
object = new MyObject();
}
ショートカットを使用することもできますif(obj)
typeof(obj)
他の可能な値の中でクラスのオブジェクトに対して「object」を返します。
if (!("someVar" in window)) {
someVar = loadObject();
}
JS が以前にグローバルに割り当てられているsomeVar
か、最上位の を宣言しているかどうかがわかりますvar someVar
。
ロードされた値が であっても、それは機能しますundefined
。