سؤال

وأنا تجريب مع مشروع جافا سكريبت اللغويات. أود أن نبني عليه باستخدام كائنات لتمثيل الأسماء والوظائف لتخزين أفعال لأن هذا يجعل تصور مشروعي أقل صعوبة. أنا باستخدام وظائف كمفاتيح إلى كائن (لقد كتبت على سبيل المثال أدناه). سيكون من الممكن إجراء تسلسل هذا مع JSON عندما يأتي الوقت لحفظ البيانات.

function verbFn() {
   //do something
}

var nouns = {};

nouns[verbFn] = 'some value';

في هذا المثال، سوف JSON تكون قادرة على إجراء تسلسل "الأسماء"؟


واه ... بعد التفكير في سؤالي الأصلي وقراءة تعليقات جئت إلى استنتاج مفاده أن تحاول أن تفعل الأمور على هذا النحو هو مجرد خاطئة جدا وسخيفة.

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

المحلول

لا، JSON لا تستطيع أن تفعل هذا. مفاتيح يجب أن تكون السلاسل بين علامات الاقتباس المزدوجة.

وأيضا يبدو أنك لا في الواقع باستخدام وظيفة كمفتاح - انه يجري تحويلها إلى سلسلة:

<script>

var x = {};
x[window.open] = true;

for (var i in x)
    alert(typeof i + '\n' + i); // typeof i == string

</script>

نصائح أخرى

ووفقا ل لا لا يمكنك. مفتاح يجب أن يكون سلسلة

وكنت لا حقا باستخدام وظائف كمفاتيح - كنت تستخدم تحويل سلسلة من وظيفة كمفتاح، والتي أيضا تعتمد ضمنيا على تلك التأكيدات سلسلة كونها فريدة من نوعها. لمنصات التي تدعم وظائف إلغاء ترجمته هذا يعمل بشكل جيد، ولكن من الناحية النظرية يمكن أن يكون هناك تطبيقات التي ترجع فقط "[وظيفة]" الذي سيكون سيئا جدا في قضيتك.

وJSON هو تركيب هيكل البيانات. وظيفة ليست البيانات، لذلك ليس هناك أي وسيلة يمكن تسلسل كجزء من بنية بيانات (رئيسي أو غير ذلك). بغض النظر عن اللغة أو تنفيذ أو أي شيء آخر.

لا، يجب أن يكون دائما مفاتيح سلاسل ولا شيء غير ذلك. انظر معيار وصف .

وnouns لا صفيف، انها الخريطة، جدول التجزئة، مجموعة النقابي، "وجوه"، واحدة من تلك، مهما كان الاسم الذي تفضل.

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