سؤال

في ActionScript ، كيف يمكنك اختبار إذا تم تعريف كائن ، أي ، وليس فارغًا؟

هل كانت مفيدة؟

المحلول

اختبار إذا تم تعريف كائن

يعمل هذا في AS2 و AS3 ، وهو الطريقة الأكثر موثوقية لاختبار ما إذا كان للكائن قيمة.

if (obj != null) {
    doSomethingWith(obj);
}

إنها أيضًا الطريقة الأكثر موثوقية لاختبار خاصية الكائن وقراءتها في نفس التعبير:

if (arr[0] != null && arr[0]>5) {
    doSomethingWith(arr[0]);
}

اختبار إذا كان كائن لاغ

هناك فرق بين الفارغ وغير المحدد ، ولكن إذا كنت لا تهتم ، فيمكنك فقط إجراء مقارنة طبيعية بين أحدهما لأنها تقارن متساوين:

if (obj == null) {
    doSomethingWith(obj);
}

بالضبط مثل

if (obj == undefined) {
    doSomethingWith(obj);
}

إذا كنت تهتم بالفرق ، فاستخدم المشغل === أو! == ، والذي لن يحوله.

if (obj === undefined) {
    // obj was never assigned a value
}
else if (obj === null) {
    // obj was explicitly set to null
}
else {
    doSomethingWith(obj);
}

نصائح أخرى

إلى عن على ActionScript 3.0, ، إذا كان كل ما تريده هو اختبار عام لا شيء, ، ثم من السهل جدًا:

var a;
var b;
var c;
var d;
a = undefined;
b = null;
c = 5;
if (a) 
    trace(a);
if (b) 
    trace(b);
if (c) // Will trace
    trace(c); 
if (d) 
    trace(d);

في المثال أعلاه ، فقط c سوف تتبع. هذا عادة ما أحتاجه ، والتحقق فقط if (obj) هو النسخة الأكثر قابلية للقراءة.

تستخدم هذه الطريقة تحويل ضمني إلى قيمة منطقية ، والمعروفة أيضًا باسم الإكراه المنطقي, وتفاصيل ما هي القيم التي ستكملها على خطأ وما هي القيم التي ستعمل عليها اتبع معايير ECMA وكذلك موثقة خصيصًا لـ ActionScript.

مجرد اختباره ضد فارغ.

var someObj:Object = getSomeObjectOrMaybeNull();
if(someObj == null) {
  trace("someObj is null!");
} else {
  trace("someObj is not null!");
}

يمكنك أيضًا حلول كائن الأصل لمعرفة ما إذا كان يحتوي على أي حالات من الكائن الذي تبحث عنه.

foundit=false;
for (var i in this) {
    if (this[i]._name == "MyMovie") {
         foundit=true;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top