هل يمكن أن أضيف خاصية نصية؟
الأهمية: 5
انظر الي الكود التالي:
let str = "Hello";
str.test = 5;
alert(str.test);
كيف تعتقد أنها ستنجح؟ ماذا سيتضح؟
جرب تشغيلها:
let str = "Hello";
str.test = 5; // (*)
alert(str.test);
يعتمد على ما إذا كان لديك use strict
أم لا، وقد تكون النتيجة كما يلي:
undefined
(no strict mode)- An error (strict mode).
لماذا؟ لنعيد ما يحدث على السطر (*)
:
- عندما تكون خاصية ال
str
يمكن الولوج إليها, “wrapper object” يكون قد تكون. - في حالة ال strict mode, الكتابة فيها يكون خطأ.
- فيما عَدا ذلك, تجري العملية المتعلقة بالخصائص, ال object يحصل علي خاصية
test
, و لكن بعد ذلك يختفي “wrapper object” , لذلك في السطر الأخيرstr
لا أثر له.
وهذا المثال يبين بوضوح أن الأنواع البدائية ليست objects.
لا يمكنهم تخزين بيانات إضافية .