بعد تعلم اللغات التقليدية الموجهة للكائنات ، مثل Java C ++ ، أنا غير مرتاح بعض الشيء عندما أنقل إلى JavaScript ، وخاصة وظيفة الكائن المزعومة في JavaScript ، والتي في بعض الأحيان أشعر بالارتباك. لذلك قمت ببساطة بفرز بعض الأشياء المفاهيمية أدناه لتسهيل التعلم والتفاهم ، وسوف أشرحها مع بعض المعرفة الموجهة نحو كائن Java.
دعونا أولاً نفهم بعض المفاهيم:
1. أولاً وقبل كل شيء ، ما الذي يشير إليه الكائن في ECMASCRIPT؟ هناك 5 أنواع بيانات بسيطة في ECMASCRIPT: غير محدد ، لاغية ، منطقية ، رقم ، سلسلة. هناك أيضًا نوع بيانات معقد ، وهو كائن.
2. النوع المرجعي-مفهوم الفصل في جافا
قيمة النوع المرجعي --- مفهوم الكائنات في جافا
3. وظائف ---- مفهوم الأساليب في جافا
4.var --- يعلن مشغل متغير. نظرًا لأن متغير JS هو نوع فضفاض ، يعني فضفاضة أنه يمكن استخدامه لحفظ أي بيانات. لا يتم استخدام المتغير إلا لتمثيل عنصر نائب ، لذلك لا يتعين على المتغير تحديد String و Int و Var. لاحظ أنه يمكن إعلان الكائن مع VAR.
5.Object () ، ما هو --- مُنشئ الكائن في جافا ، مُنشئ الكائن في JS.
هدف
يمكن لـ JS إضافة خصائص وطرق ديناميكية.
على سبيل المثال ، قم بإنشاء مثيل كائن
var obj = new Object();
المتغير OBJ هو كائن كائن جديد ().
التالي:
var obj = new Object () ؛ obj.name = 'zeng' ؛ obj.age = 12 ؛ obj.fun = function () {console.log (this.name+this.age) ؛}ولكن هذا ليس تغليفًا كبيرًا ، لذلك يتم استخدام التمثيل الحرفي الكائن في كثير من الأحيان
var obj = {name: 'zeng' ، en: 12 ، fun: function () {console.log (this.name+this.age) ؛ }} obj.fun () ؛ // print Out: Zeng12الوصول إلى خصائص الكائن:
1. استخدام الأقواس
console.log(obj["name"]);
2. استخدم النقاط ، يوصى باستخدام هذه الطريقة
console.log(obj.name );
وظيفة
الوظائف هي جزء مهم من أي لغة. وتسمى الوظائف JS. يمكنك أيضًا أن تفهم أنها أساليب Java ووظائف اللغة C ، كلها. ومع ذلك ، من حيث الإعلان والاستخدام ، يمكن أن تكون وظائف JS مختلفة تمامًا.
مثال على الوظيفة:
وظيفة المتعة () {return "example" ؛} console.log (fun ()) ؛ // الإخراج: "مثال"من الممكن أيضًا:
var fun = function () {return "إنشاء وظائف باستخدام التعبيرات"} ؛ console.log (fun ()) ؛ // الإخراج: "إنشاء وظائف باستخدام التعبيرات"في المثال أعلاه ، ستلاحظ أن الوظيفة ليس لها اسم وظيفة ، فقط اسم متغير ممتع ، وهناك آخر في نهاية التعبير ؛ فاصلة فائقة ،
يمكنك فقط فهمه كتعبير يعلن عن متغير. يعلن أن المتغيرات الأخرى مكتوبة مثل هذا:
var name = "Zeng"; // هناك أسماء متغيرة وأسماء فاصلة
لنأخذ مثالاً مع المعلمات:
وظيفة متعة () {عودة وسيطات [0] + وسيطات [1] + وسيطات [2] ؛} console.log ("This is" ، "A" ، "example")) ؛ // الإخراج: "هذا مثال"أليس هذا غريبا بعض الشيء؟ بادئ ذي بدء ، فإن الوظيفة التي أنشأتها ليس لديها معلمات. يتم إعطاء المعلمات عند استدعاء ، ويمكن الحصول على المعلمات وإعادتها في الوظيفة.
في الواقع ، نحن هنا بحاجة إلى توضيح نقطة أن وظيفة JS لا تمانع في المرور في عدد قليل من المعلمات ، ولا تهتم بنوع المعلمات! والسبب هو أن معلمات الاستقبال الداخلية للوظيفة يتم تخزينها في صفيف!
الصفيف هو الحجج أعلاه. بالطبع ، لا تمانع الصفيف في تمرير بعض المعلمات فيها. إذا كانت هناك معلمات ، فسوف أضيف واحدة ، وإذا لم تكن هناك معلمات ، فسأخلف.
يمكننا استخدام هذه الميزة كمثال:
التحميل الزائد لطرق التقليد-استخدم معلمات مختلفة لإجراء ردود فعل مختلفة
Function Fun () {if (endressions.length == 1) {return alentations [0]*10 ؛ } if (encuments.length == 2) {return (الوسيطات [0]+وسيطات [1])*10 ؛ } return 10 ؛} console.log (متعة (11،111)) ؛ // العودة 1220! ! ! !لا حمولة زائدة:
المثال أعلاه هو حمولة زائدة من وظائف التقليد. لماذا أحتاج إلى تقليدها؟ سأكون قادرًا على إنشاء العديد من الوظائف ذات المعلمات المختلفة قريبًا.
وظيفة المتعة (num1) {return "متعة مع معلمة واحدة فقط"} وظيفة متعة (num1 ، num2) {return "fun with اثنين من المعلمتين" ؛} console.log (متعة (11)) ؛ // الإخراج "متعة مع معلمتين"يطلق عليه بوضوح وظيفة مع معلمة واحدة ، ولكن يتم تنفيذها بالفعل مع معلمتين. السبب: يحدد JS وظيفتين بنفس الاسم ، والاسم ينتمي فقط إلى الوظيفة المحددة لاحقًا! ! ! لذلك لا توجد ميزة التحميل الزائد في JS.
اسم الوظيفة هو مؤشر:
var fun = function (num1 ، num2) {return num1+num2 ؛} ؛ var new_fun = fun ؛ fun = null ؛ // قم بتعيين الوظيفة على nullconsole.log (new_fun (10،20)) ؛ // الإخراج: 30console.log (متعة (10،20)) ؛ // الاستثناء: المتعة ليست وظيفةيمكن أن نرى أنه على الرغم من المرح = فارغ ؛ قبل هذا var new_fun = متعة ؛ وهذا يعني أن المؤشر يشير أيضًا إلى new_fun ، لذلك لا يزال من الممكن تنفيذ وظيفة new_fun (
يمكن أيضًا استخدام الوظائف كقيم:
وظيفة إضافة (متعة ، num) {return fun (num) ؛} add_10 (num) {return num+10 ؛} console.log (add (add_10،200)) ؛ // الإخراج: 210يمكن تفسيره على النحو التالي:
الوظيفة إضافة (دالة ، المعلمة) {وظيفة الإرجاع (المعلمة التي تم تمريرها) ؛}الحجج. callee من الوظيفة
هنا مثال متكرر
وظيفة متعة (num) {if (num <= 1) {console.log (num) ؛ العودة 1 ؛ } آخر {console.log (num) ؛ return num * edations.callee (num-1) ؛ }} console.log (متعة (3)) ؛ // الإخراج 6