كيفية التحقق إذا كان المتغير تم تحميله في جافا سكريبت ؟
-
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
.