سؤال

لا قيمة لها العودة toString() أن يكون قادرا على استدعاء قيمة.toString()?عندما كنت تعرف يمكنك الاتصال القيمة.toString()?

<script>
var newList = function(val, lst)
{
  return {
    value: val,
    tail:  lst,
    toString: function() 
    {
      var result = this.value.toString();
      if (this.tail != null)
        result += "; " + this.tail.toString();
      return result;
    },
    append: function(val)
    {
      if (this.tail == null)
        this.tail = newList(val, null);
      else
        this.tail.append(val);
    }
  };
}

var list = newList("abc", null); // a string
list.append(3.14); // a floating-point number
list.append([1, 2, 3]); // an array
document.write(list.toString());
</script>

نصائح أخرى

كما السيدلامعة وجديدة الدول ، كل كائنات جافا سكريبت لديك toString الأسلوب.غير أن هذه الطريقة ليست دائما مفيدة ، خاصة بالنسبة فئات مخصصة وجوه حرفية ، والتي تميل إلى العودة سلاسل مثل "[Object object]".

يمكنك إنشاء الخاصة بك toString أساليب بإضافة وظيفة بهذا الاسم إلى فئة' النموذج كما يلي:

function List(val, list) {
    this.val = val;
    this.list = list;

    // ...
}

List.prototype = {
    toString: function() {
        return "newList(" + this.val + ", " + this.list + ")";
    }
};

الآن إذا قمت بإنشاء new List(...) و الاتصال toString طريقة (أو تشغيله من خلال أي وظيفة أو المشغل أن يحوله إلى سلسلة ضمنا) ، العرف toString وطريقة استخدامها.

أخيرا لاكتشاف ما إذا كان كائن يحتوي على toString طريقة تعريف لفئتها (لاحظ أن هذا سوف لا العمل مع subclassing أو كائن حرفية;الذي ترك ممارسة القارئ) ، يمكنك الوصول لها constructor's prototype مكان الإقامة:

if (value.constructor.prototype.hasOwnProperty("toString")) {
    alert("Value has a custom toString!");
}

ودوكمنت، مثل window.alert، استدعاءات الأسلوب toString حجتها قبل أن يكتب أو إرجاع أي شيء.

والإجابات الأخرى الصحيحة التي toString موجود في كافة الكائنات جافا سكريبت.

في عام، رغم ذلك، إذا كنت تريد أن تعرف ما إذا كان يوجد الدالة على وجوه الخاص بك، يمكنك اختبار ذلك كما يلي:

if (obj.myMethod) {
    obj.myMethod();
}

وهذا لا، بالطبع، تأكد من أن myMethod هي وظيفة بدلا من خاصية. ولكن من المفترض عليك أن تعرف ذلك.

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