الرجوع الي الدرس

هل يمكن أن أضيف خاصية نصية؟

الأهمية: 5

انظر الي الكود التالي:

let str = "Hello";

str.test = 5;

alert(str.test);

كيف تعتقد أنها ستنجح؟ ماذا سيتضح؟

جرب تشغيلها:

let str = "Hello";

str.test = 5; // (*)

alert(str.test);

يعتمد على ما إذا كان لديك use strict أم لا، وقد تكون النتيجة كما يلي:

  1. undefined (no strict mode)
  2. An error (strict mode).

لماذا؟ لنعيد ما يحدث على السطر (*):

  1. عندما تكون خاصية ال str يمكن الولوج إليها, “wrapper object” يكون قد تكون.
  2. في حالة ال strict mode, الكتابة فيها يكون خطأ.
  3. فيما عَدا ذلك, تجري العملية المتعلقة بالخصائص, ال object يحصل علي خاصية test , و لكن بعد ذلك يختفي “wrapper object” , لذلك في السطر الأخير str لا أثر له.

وهذا المثال يبين بوضوح أن الأنواع البدائية ليست objects.

لا يمكنهم تخزين بيانات إضافية .