English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
جزء الجسم
نوع Object
Object هو مجموعة غير منضوية يمكنها وضع أي نوع من الأجسام، جميع الأجسام الأخرى تنحدر من هذا الجسم.
هناك نوعان لإنشاء Object، واحد هو استخدام عمليات new، والأخر هو طريقة النصوص المفهورة.
1. إنشاء Object باستخدام عمليات new
تعريف obj = new Object(); // ملاحظة، يجب أن يكون الحرف الأول كبيرًا، يمكن أيضًا كتابته كـ Object()
ملاحظة، إن إنشاء الجسم الجديد باستخدام new Object() يساوي في القيمة طريقة النصوص المفهورة obj = {}.
2. إنشاء باستخدام طريقة النصوص المفهورة:
تعريف obj = { اسم : 'trigkit4', عمر : 21 }; // نقطة السطر يجب أن تضمن
عند استخدام وصفة لتحديد كائن Object، لن يتم استدعاء بناء كائن Object() (باستثناء FF).
كائن Object.prototype
كل بناء كائن يحتوي على خاصية prototype تشير إلى كائن原型.
Object.prototype.print = function(){ console.log(this)}; var obj = new Object(); obj.print() // Object
يورث الكائن المثال obj الخاصيات والطرق من Object.prototype
1. الكائن هو نوع خاص من البيانات. يمتلك الكائن الخاصيات والطرق. JavaScript لغة موجهة نحو الكائنات، ولكن لا يستخدم الصفة. يُبنى JavaScript على [prototype][1] وليس على الصفة.
2. الخاصية: هي متغير تخص كائناً معيناً. الطريقة: هي دالة يمكن تنفيذها فقط من قبل كائن معين.
3. الكائنات هي مجموعة من الخاصيات والطرق. الطريقة هي دالة، وهي عضو من أعضاء الكائن. الخاصية هي قيمة أو مجموعة من القيم (بشكل مجموعة أو كائن)، وهي عضو من أعضاء الكائن.
4. الكائنات في JavaScript قائمة على دالة البناء، عند إنشاء كائن جديد باستخدام دالة البناء، يمكن القول إنه تم تكوين كائن جديد. الخاصيات هي المتغيرات داخل دالة البناء.
استخدام دالة البناء لتكوين الكائنات:
cat = new Animal();
JavaScript لغة قائمة على الكائن (object-based) حيث تكون كل شيء تقريباً كائناً، ولكنها ليست لغة برمجة موجهة نحو الكائنات (OOP) حقيقية لأن جسدها لا يحتوي على class (صفة).
<script type="text/javascript"> // الكائن هو مجموعة من الأسماء/القيم var browser = { // الكائن مكون من كوفي name:"Firefox", kernel:"Gecko" }; </script> // يمكن الوصول إلى خاصية الكائن باستخدام نقطة (.) أو "[]" browser.name //"Firefox" browser["kernel"] //"Gecko"
الكائن (objct) هو مجموعة من الخاصيات، حيث تشكل كل خاصية "اسم/قيمة"، يحدد JavaScript كائناً خاصاً آخر يُدعى المجموعة، وهي مجموعة من القيم الم秩وية معينة.
يحدد JavaScript كائناً خاصاً آخر يُدعى الدالة، والدالة هي كائن يحتوي على كود قابل للتنفيذ مرتبط بها، يتم تنفيذ الكود من خلال استدعاء الدالة وإرجاع نتيجة الحساب.
في JavaScript لا توجد كلاس، ولكن تم تسميتها بأسم جديد يُدعى "م原型 الجسم"، لذا "الصفة == الجسم الأصلي"، لمزيد من التفاصيل انظر: كيفية كتابة الصفة في JavaScript (أولاً)
ثانيًا، الفئة (النموذج النموذجي) والنموذج (المثيل) والفرق والارتباط
1. الفئة (النموذج النموذجي) هي غير مادية، هي مفهوم، تمثل فئة من الأشياء.
2. العنصر مادي، واقعي، يمثل شيء مادي.
3. الفئة (النموذج النموذجي) هي نموذج لمثيلات العناصر، والمثيل هو فرد من الفئة.
هناك خلط شائع يعتقد أن قيم الأرقام (الiterals) ليست كائنات. هذا بسبب خطأ في معالج جافا سكريبت، حيث يحاول تحويل عمودي الحذف إلى جزء من قيمة الأرقام العائمة.
هناك العديد من الطرق حول كيفية جعل قيم الأرقام تبدو ككائنات.
2..toString(); // يمكن تحليل النقطة الثانية بشكل طبيعي
2 .toString(); // انتبه إلى المسافة قبل النقطة
(2).toString(); // 2 يتم حسابه أولاً
حذف الصفة
الطريقة الوحيدة لإزالة الصفة هي استخدام عمودي الحذف delete؛ لا يمكن حذف الصفة بشكل حقيقي بتعيينها إلى undefined أو null، بل فقط إزالة الصلة بين الصفة والقيمة.
ثلاث خصائص أساسية لبرمجة الوجهات الموجهة في جافا سكريبت
التعبئة: عدم النظر في التنفيذ الداخلي، فقط النظر في الاستخدام
الوراثة: وراثة من العناصر الموجودة مسبقًا لإنشاء عناصر جديدة
التفاوت: يعني التفاوت أن يكون نفس الإشارة في حالات مختلفة عدة،
1. التعبئة
التعبئة هي دمج الخصائص والسلوكيات المشتركة للكائنات المماثلة في فئة واحدة، مما يسهل الاستخدام. على سبيل المثال، يمكن تعبئة "الإنسان" كما يلي:
الإنسان {
العمر (الصفة الأولى)
الطول (الصفة الثانية)
الجنس (الصفة الثالثة)
القيام بالأعمال (السلوك الأول)
التحرك (السلوك الثاني)
الكلام (السلوك الثالث)
}
فوائد التعبئة:
يحمي كاملية البيانات الداخلية؛
يجعل إعادة بناء العناصر أسهل؛
يقلل من الترابط بين الوحدات، ويحسن إعادة استخدام العناصر;
يساعد في تجنب تضارب الأسماء؛
انظر إلى مثال أدناه:
<script type="text/javascript"> var boy = {}; // إنشاء عنصر فارغ boy.name = "小明"; // تعيين خصائص النموذج النموذجي boy.age = 12; var girl = {}; girl.name = "小红"; girl.age = 10; </script>
هذا أقل تعبئة ممكنة، حيث يتم تضمين سمتين داخل عنصر. ولكن، لهذه الطريقة عيوبان، الأولى هي أن كتابة العديد من النماذج ستكون معقدة للغاية؛ الثانية هي أن لا يوجد طريقة لرؤية أي ارتباط بين النموذج والنموذج النموذجي.
نموذج بناء
لحل مشكلة إنشاء نماذج من العنصر النموذجي، يقدم جافا سكريبت نموذج بناء (Constructor).
ما يُدعى "دالة البناء" هو في الواقع دالة عادية، ولكن يستخدم هذا الدالة متغير this. باستخدام عملياتorator new على دالة البناء، يمكن إنشاء مثيل، ويُربط متغير this بالكائن المثيل.
على سبيل المثال، يمكن كتابة原型 كائن boy و girl كما يلي:
<script type="text/javascript"> function Person(name,age){ this.name = name; this.age = age; } </script>
الآن يمكننا إنشاء كائنات المثيلات.
<script type="text/javascript"> var boy = new Person("小明",12); var girl = new Person("小红",10); alert(boy.name); //小明 alert(boy.age); //12 </script>
في هذه الحالة، سيكون لدي boy و girl خاصية constructor تلقائيًا تشير إلى دالة البناء الخاصة بهما.
alert(boy.constructor == Person); //true
alert(girl.constructor); // يُنتج كود دالة البناء كامل، جرب هذا بنفسك
أداة Prototype في Javascript تشير إلى أن كل دالة بناء لديها خاصية prototype تشير إلى كائن آخر. جميع الخاصيات والمساقات في هذا الكائن سيتم تركة بواسطة المثيلات للدالة البناء.
هذا يعني أننا يمكننا تعريف الخاصيات والمساقات غير المتغيرة مباشرة على كائن prototype.
<script type="text/javascript"> function Person(name,age){ this.name = name; this.age = age; } Person.prototype.type = "البشر"; Person.prototype.eat = function(){ alert("يأكل الأرز"); } </script>
ثم، قم بإنشاء المثيلات:
<script type="text/javascript"> var boy = new Person("小明","12"); var girl = new Person("小红","10"); alert(boy.type); // البشر boy.eat(); // يأكل </script>
في هذه الحالة، تكون خاصية type لكل المثيلات والطريقة eat() في الواقع نفس عنوان الذاكرة، يشير إلى كائن prototype، لذا يتم تعزيز كفاءة التشغيل.
alert(boy.eat == girl.eat); //true
خاصية النموذج هي خاصية مدمجة، تُحدد دالة البناء التي يتم توسيعها بواسطتها.
الكود التالي يضيف خاصية جديدة size إلى دالة بناء Animal، هذه الخاصية الجديدة هي خاصية النموذج لـ cat. من خلال استخدام خاصية النموذج، يمكن لكل من يتم إنشاؤه باستخدام دالة بناء Animal الوصول إلى خاصية size.
cat = new Animal("feline","meow", "walk/run"); cat.prototype.size = "fat";
في هذه الحالة، جميع خصائص الحجم لجسم Animal هي "fat". بفضل أن prototype هو مثيل جديد لObject، وأنه لا يزال جسماً، يمكن إضافة خصائص جديدة إلى هذا الجسم. مثل كيفية إضافة خصائص جديدة إلى جسم style وهو جزء من javascript كجسم، يمكن إضافة خصائص جديدة إلى نهاية style.
<script type="text/javascript"> /*تعريف فئة Person*/ function Person(_name,_age,_salary){ //خصائص العامة لفئة Person، طريقة تعريف خصائص العامة للفئة هي:”this.اسم الخصية“ this.Name=_name; //خصائص الخاصة لفئة Person، طريقة تعريف خصائص الخاصة للفئة هي:”var اسم الخصية“ var Age=_age; var Salary=_salary; //تحديد طريقة تعريف الطريقة العامة (الطريقة المتميزة) لفئة Person، طريقة تعريف الطريقة العامة للفئة هي:”this.functionName=function(){.....}“ this.Show=function(){ alert("Age="+Age+"\t"+"Salary="+Salary);//هو من المقبول الوصول إلى الخصائص الخاصة للفئة في الطريقة العامة } </script>
عند البحث عن خاصية معينة في الجسم، سيقوم الجسم أولاً بمرور جميع خصائصه، إذا لم يجد، فإنه يستمر في البحث عن الجسم المشار إليه من قبل [[Prototype]]، إذا لم يجد، يستمر في البحث عن [[Prototype]].[[Prototype]] المشار إليه، وهكذا دواليك، حتى يكون [[Prototype]].….[[Prototype]] غير معرف (Object [[Prototype]] هو غير معرف)
بشكل بسيط، عبر [[Prototype]] يحفظ الإشارة إلى آخر الجسم، ويتم البحث عن الخصائص من خلال هذه الإشارة، وهذا هو سلسلة الأبوة.
مثلث null
يستخدم js لتحديد قيمة null لفائدة:
تعيين مؤشر فارغ، مما يجعل من السهل فهم أن هذا المتغير مخصص لإ��اء الأجسام. كما أن ذلك يساعد في تصحيح الأخطاء
مثلث window العالمي
أي وظيفة أو متغير عالمي في JavaScript هو جزء من خصائص النافذة.
مثلث نفس والنافذة window متطابق تمامًا،عادة ما يستخدم self لتحديد ما إذا كانت الحالية في نافذة.
المفردات الرئيسية لـ window تشمل ما يلي:
مفردة document لـ JavaScript
مفردة frames لـ JavaScript
مفردة history لـ JavaScript
مفردة location لـ JavaScript
مفردة navigator لـ JavaScript
مفردة screen لـ JavaScript
بعض الطرق الشائعة
طريقة valueof(): تعود إلى القيمة الأصلية للمحدد
يستخدم طريقة split() لقسيم النص إلى مجموعة من السلاسل، ويعود إلى هذه المجموعة.
يستطيع طريقة indexOf() العودة إلى موقع الظهور الأول للسلسلة المحددة في النص.
يستخدم طريقة substring() لاستخراج الأحرف بين نقطتين معينتين في النص.
يستطيع طريقة substr() استخراج سلسلة معينة من النص من موقع startPos.
يستخدم طريقة join() لوضع جميع العناصر في سلسلة واحدة.
arrayObject.join(النقاط المفصولة)
يستخدم طريقة reverse() لقلب ترتيب العناصر في المجموعة.
يستطيع طريقة slice() العودة إلى العناصر المحددة من المجموعة الموجودة مسبقًا.
المفردات الأصلية
المفردات الأصلية تستخدم لإنشاء عملية تحتوي على عدد كبير من الخصائص، مثل ما يلي:
<script type="text/javascript"> var company = { name : "Microsoft", ages : 39, employees : 99000, CEO : "Nadella" }; </script>
هنا يجب الانتباه إلى أن الخصائص والقيم المُفصولة بلوغمة(:)؛ الخصائص المتعددة مُفصولة بلوغمة(,). يمكن تعريف طرق في المفردات الأصلية فقط بحيث يتم كتابة function على خصائص هذا الهدف، وهو دالة مجهولة المصدر، يتم التعبير عن دعوتها فقط بكتابة اسم الطريقة().
<script type="text/javascript"> var dog = { name:"husky", age:2, run:function(){ return "123"; } } alert(dog.run()); إذا كان dog.run، فإنه سيظهر كود جزء function التالي </script>
مغلفات القيم الأساسية
يوجد خمس أنواع أساسية من القيم في js: number،string،Boolean،null وundefined. باستثناء null وundefined، الثلاثة الآخرين يمتلكون ما يُدعى بـ أهداف التغليف الأساسية. يمكن استخدام بناء الأهداف المدمجة Number()،String() وBoolean() لإنشاء أهداف التغليف.
عدد num = new Number(10); console.log(typeof num); //عدد طريقة Object() Object(); //يـعـدل عـدوـد فارغ Object(undefined); //يـعـدل عـدوـد فارغ Object(null); //يـعـدل عـدوـد فارغ Object(1); //مثلـًا new Number(1) Object('foo'); //مثلـًا new String('foo') Object(true); //مثلـًا new Boolean(true) Object([]); //يـعـدل العـدوـد الأصلي Object({}); //يـعـدل العـدوـد الأصلي Object(function(){}); //يـعـدل العـدوـد الأصلي
جزء العـدوـد
1.عنصر Array
عنصر Array:يـوفر دعمًا لتـكـوين أي نوع من أنواع البيانات.
arrayObj = new Array()
arrayObj = new Array([حجم])
arrayObj = new Array([عنصر0[, عنصر1[, ...[, عنصرN]]]])
التعريف:عدد arr = [2,3,45,6];عدد arr = new Array(2,4,5,7)
لا يوجد أي فرق في التعريف،[ ] يـجـب أن يكون أداءه عالـًا لأنه مـا يـجـب أن يكون مـا قـصـير
الاستخدام من قبل العـدوـد والأصناف:عدد aTest = []; عند إنشاء العـدوـد،يـجـب أن يكون استخدام العـدوـد الأصلي خيارًا جيدًا؛مـثلًا،يـجـب أن يُستخـدم الأصناف الأصليـة أيضًا لـلـتـوفـير المـا يـجـب أن يكون.السطران التاليـان متطابقتان،لكن الأصناف الأصليـة هي الأقصر:
عدد oTest = new Object; //يـجـب تجنـب الاستخدام عدد oTest = {}; //الأفضل أو عدد 0Test = [];
للـتـحـلـيـل الـمـا يـجـب أن يكون أداء التـحـلـيـل مـا أثـر على أداء التـحـلـيـل لـلـمـعـدـودات،يـجـب استخـدام الدورات التقليدية for.
عدد list = [1, 2, 3, 4, 5, ...... 100000000]; لـ(عدد i = 0, طول list = list.length; i < طول; i++) { console.log(list[i]); }
يوجد معالجة في الكود أعلاه، وهي توفير طول المصفوفة من خلال l = list.length.
دالة إنشاء Array
بما أن دالة إنشاء Array قد تكون غير واضحة في كيفية معالجة المعاملات، يُنصح دائمًا باستخدام синтaxis المصفوفة المباشر - [] - لإنشاء المصفوفات.
لذلك، قد يسبب الكود التالي الارتباك:
new Array(3, 4, 5); // النتيجة: [3, 4, 5]
new Array(3) // النتيجة: []، طول هذا المصفوفة هو 3
ينبغي تجنب استخدام دالة إنشاء المصفوفة لإنشاء مصفوفات جديدة. يُنصح باستخدام синтaxis المباشر للصفوف. إنها أكثر قصرًا وسهولة، مما يزيد من قراءة الكود.
خصائص مصفوفة Array
خصائص مصفوفة Array الثلاثة: خاصية Length، الخاصية prototype، الخاصية constructor
1. الخاصية Length
خاصية Length تمثل طول المصفوفة، أي عدد العناصر فيها. لأنه يتم حساب مؤشرات المصفوفة من 0، فإن الحدود للمصفوفة هي: 0 و length-1. على عكس معظم اللغات الأخرى، يمكن تعديل خاصية length في المصفوفات في JavaScript، مما يتطلب الانتباه.
2. الخاصية prototype
استرداد مرجع إلى النموذج الأصلي للعنصر. الخاصية prototype هي م yhteinen kaikille objekteille.
لإيضاح استخدام خاصية prototype الخاص بمصفوفة Array، لنأخذ مثالاً.
إضافة طريقة لاسترداد أكبر عنصر في عنصر المصفوفة. لتحقيق ذلك، قم بإنشاء دالة، وأضفها إلى Array.prototype واستخدمها.
function array_max() { var i,max=this[0]; for(i=1;i<this.length;i++) { if(max<this[i]) max=this[i]; } return max; } Array.prototype.max=array_max; var x=new Array(1,2,3,4,5,6); var y=x.max();
بعد تنفيذ هذا الكود، سيحفظ y القيمة الأكبر في مصفوفة x، أو القيمة 6.
3. الخاصية constructor
دالة إنشاء العناصر. التوضيح: الخاصية constructor هي كل عنصر من العناصر التي تحتوي على prototype. وتشمل هذه العناصر جميع العناصر الجذعية من JScript باستثناء عناصر Global و Math. تقوم الخاصية constructor بحفظ استدعاء الدالة التي تشكل مثالاً على العنصر المحدد.
مثالًا:
x = new String("Hi"); if(x.constructor==String) //يتم التعامل معها (الشرط صحيح). //أو function MyFunc{ //جسم الدالة. } y=new MyFunc;
if(y.constructor==MyFunc) //يتم التعامل معها (الشرط صحيح).
بالنسبة للمجموعات:
y = new Array();
طريقة Array
طريقة sort()
النحو
arrayObject.sort(sortby)
sortby اختياري. يحدد ترتيب الترتيب. يجب أن يكون دالة.
var arr = [11,2,28,4,5,1];
console.log(arr.sort()); //return [1, 11, 2, 28, 4, 5]
لماذا لم يتم ترتيب 11 و 28 هنا وفقًا للترتيب؟ هذا لأن sort بدون معلمات يقوم بترتيب وفقًا للترتيب الحرفي للرموز.
إذاً، كيف يمكننا ترتيب عناصر المجموعة من الأصغر إلى الأكبر؟ انظر إلى الكود أدناه:
var arr = [11,2,28,4,5,1]; console.log(arr.sort(function(a,b){ return a-b; //return [1, 2, 4, 5, 11, 28] });
إذا كنت ترغب في الترتيب بناءً على معيار آخر، فإنه يجب تقديم دالة مقارنة، يجب أن تقارن القيمتين، ثم تعود رقمًا يوضح ترتيب القيمتين. يجب أن يكون لدي دالة المقارنة هذه اثنين من المعلمات a و b، والترتيب الذي يجب أن يعود به هو كما يلي:
إذا كان a أصغر من b، فإن a يجب أن يظهر قبل b في الترتيب بعد الترتيب، فإنه يجب أن يعود قيمة أقل من 0.
إذا كان a يساوي b، فإنه يجب أن يعود قيمة 0.
إذا كان a أكبر من b، فإنه يجب أن يعود قيمة أكبر من 0.
هذا هو نهاية محتوى المقالة، آمل أن يكون هذا المقال مفيدًا جدًا في تعلمكم، وأتمنى أن تدعموا دليل تعليم النفخ.