حسنًا، ربما سمعت من قبل عن الكائنات في JavaScript ومدى أهميتها لفهم اللغة.
تجعل الكائنات JS سهلة القراءة ومفيدة للغاية نظرًا لنموذجها "key": "value". لكن الشيء الذي أريد إبرازه هو أن قسم "القيمة" لا يقبل فقط سلسلة بسيطة، بل كائنًا آخر، والذي بدوره قد يكون كائنًا آخر وما إلى ذلك. على سبيل المثال:
const character = { name:"Arthur Morgan", age:24, face: { hairSize:5, eyesColor: "blue", } }
يوضح هذا المقتطف أن الوجه هو كائن وكذلك شخصية. من الجيد تمامًا القيام بذلك، والعديد من واجهات برمجة التطبيقات المعقدة تتعامل مع بيانات مثل هذه، وتجميعها مرارًا وتكرارًا عندما يكون ذلك مهمًا.
لكن القوة الحقيقية للكائنات تعتمد على الوظائف ، ومشكلة Leet Code هذه تتعامل معها، بالإضافة إلى أنها تعطينا جوهر كيفية عمل مكتبات الاختبار تحت الغطاء. أنت في الأساس بحاجة إلى دالة تتحقق من صحة ما إذا كانت القيمة مساوية للقيمة المتوقعة أم لا: toBe() وnotToBe(). للقيام بذلك، يمكننا إرجاع كائن بهذه الوظائف. بالمناسبة، استخدام وظائف الأسهم يجعلها أجمل ومباشرة.
إليك الجواب.
function expect(val) { function toBe(anotherValue) { if (val === anotherValue) { return true; } throw Error("Not Equal"); } function notToBe(anotherValue) { if (val !== anotherValue) { return true; } throw Error("Equal"); } return { toBe: (anotherValue) => toBe(anotherValue), notToBe: (anotherValue) => notToBe(anotherValue), }; }
يمكننا رؤيته بسرعة وهو يعمل باستخدام كائن آخر: وحدة التحكم الشهيرة وسجل وظائفها.
console.log(expect(5).toBe(null)); // give us an error "Not Equal", because 5 is not null
لاحظ أن حقيقة إرجاع كائن تمنحنا حرية استخدام expect() وبعد ذلك مباشرة، .toBe(). وذلك لأننا نعيد كائنًا ونصل فورًا إلى الخاصية toBe، وهي دالة.
تعد مشكلة كود Leet هذه طريقة ممتازة لمعرفة كيف يمكن للكائنات والوظائف أن تعمل معًا وإنشاء أشياء رائعة في JavaScript. اتمنى قد اعجبتك :)
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3