كيفية التحقق إذا كان المتغير تم تحميله في جافا سكريبت ؟

StackOverflow https://stackoverflow.com/questions/95875

  •  01-07-2019
  •  | 
  •  

سؤال

كيف يمكنني معرفة ما إذا كان بعض وجوه تم تحميل, وإذا لم يكن, كيف يمكن تحميل ، مثل ما يلي ؟

if (!isObjectLoaded(someVar)) {
    someVar= loadObject();
}
هل كانت مفيدة؟

المحلول

إذا كان كائن ثم عليك أن تكون قادرة على التحقق لمعرفة ما إذا كان null أو غير معرف ومن ثم تحميله إذا كان هو.

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

باستخدام تشير typeof وظيفة هو أيضا خيارا كما بإرجاع نوع الكائن المقدمة.ومع ذلك ، فإنه سيعود باطل أو غير معرف إذا كان الكائن لم يتم تحميلها لذلك قد تختزل قليلا إلى تفضيل شخصي في ما يخص القراءة.

نصائح أخرى

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

أنا لست متأكدا ماذا يعني لك "تحميل"...لا متغير 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 ); 

في نظرية الكشف عند النافذة.فو يأتي إلى حيز الوجود.

إذا كان عن طريق تحميل تعني المعرفة, يمكنك التحقق من نوع متغير مع typeof وظيفة. ومع ذلك تشير typeof لديها بعض المراوغات و تحديد كائن ، صفيف ، null ككائن

alert(typeof(null));

تحديد فارغة مثل تعريف كائن قد يسبب البرنامج أن تفشل ، حتى تحقق مع شيء من هذا القبيل

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

يمكنك أيضا استخدام اختصار if(obj)

إذا كنت ترغب في الكشف عن كائن مخصص:

// craete a custom object
function MyObject(){

}

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

typeof(obj) سيعود "كائن" على كائن من فئة جملة القيم الممكنة.

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

سوف أقول لكم ما إذا كان أي JS سبق تعيينه إلى العالمية someVar أو أعلنت أعلى مستوى var someVar.

من شأنها أن تعمل حتى لو كانت محملة القيمة undefined.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top