اكتب في المقدمة
اليوم أريد أن أتحقق من معرفة أنواع العقدة ونوع المعرفة التي أريد تلخيصها. لقد رأيت مقالًا على Google ، لكن الرابط الأصلي قد اختفى. لقد سحبت هذه المقالة في اللقطة. إذا كان للمؤلف الأصلي أي أسئلة ، فيرجى الاتصال بي!
تعتمد هذه المقالة على بعض JS ، وسيقوم الخبراء بتخطيها تلقائيًا! لم أكتب الكثير عن JS من قبل ، وهذا الجانب ضعيف نسبيًا ، لذلك واجهت أيضًا مشكلة عند كتابة العقد. هنا ملحق على حد علمي!
نص
أساس Node.js هو JavaScript ، لغة البرمجة النصية. ميزة واحدة شائعة لمعظم لغات البرمجة النصية هي "النوع الضعيف".
على عكس PHP ، حتى لو كانت هناك متغيرات جديدة في PHP ، فليس هناك حاجة لإعلانها ، في حين أن JavaScript لا تزال بحاجة إلى VAR لإعلانها. يغطي هذا var جميع أنواع المعاني مثل int و string و char ، إلخ. في C ++ ، وحتى الوظائف.
يتم تحرير جميع المحتوى في هذه المقالة والمقالة التالية باستخدام VIM في Linux أو Cygwin (إذا لم يكن الأمر كذلك ، يرجى تحويلها إلى طريقتك الخاصة) ، ثم عرض النتائج ضمن سطر الأوامر.
بناء الجملة الأساسي
إعلان متغير
في C/C ++ ، نعلن متغيرات مثل هذا:
`` `c ++
نسخة الكود كما يلي:
void foo () {}
int a = 0 ؛
char b = 'a' ؛
تعويم C = 1.0F ؛
void (*d) () = foo ؛ /// <نسيت إذا كان هذا ما كتبته ، باختصار ، هو مؤشر وظيفة
وفي Node.js يبدو الأمر هكذا:
`` `JavaScript
نسخة الكود كما يلي:
وظيفة foo () {}
var a = 0 ؛
var b = 'a' ؛
var c = 1.0 ؛
var d = foo ؛
لذلك ، بغض النظر عن نوع المتغير ، يتم حله مع var في node.js.
بيان الحلقة
ل ... أنا
بيان الحلقة هذا هو في الأساس مثل C/C ++ ، كلاهما
`` `c ++
نسخة الكود كما يلي:
لـ (int i = 0 ؛ i <foo ؛ i ++)
{
// ...
}
وبما أن node.js نوع ضعيف ، فحتاج فقط:
`` `JavaScript
نسخة الكود كما يلي:
لـ (var i = 0 ؛ i <foo ؛ i ++) {
// ...
}
ل ... في
هذا عبارة عن بيان حلقة ما بعد الشكل ، على غرار foreach PHP.
على سبيل المثال ، لدينا كائن JSON على النحو التالي:
جافا سكريبت
نسخة الكود كما يلي:
var foo = {
"مرحبا بالعالم"،
"العقدة": "JS" ،
"Blahblah": "Bar"
} ؛
في هذا الوقت ، يمكننا استخدام ... in to loop من خلال:
جافا سكريبت
نسخة الكود كما يلي:
لـ (VAR Key in Foo) {
console.log (key + ":" + foo [key]) ؛
}
إذا كتبنا الأمر التالي في سطر الأوامر:
نسخة الكود كما يلي:
$ عقدة foo.js
سيتم عرض المحتوى التالي على الشاشة:
نسخة الكود كما يلي:
مرحبًا
: عالم
العقدة: JS
ببله: بار
نصيحة: مما سبق ، يتم استخدام لـ ... في البيان لاجتياز الأسماء الرئيسية لكائنات JSON والصفائف والكائنات ، دون توفير اجتياز القيمة الرئيسية. إذا كنت ترغب في الحصول على قيمة المفتاح ، فيمكنك فقط الحصول عليها في شكل FOO [<name current key>]. لا يزال هذا مختلفًا بعض الشيء عن PHP foreach.
بينما ... افعل ، افعل ...
لن أشرح هذا كثيرًا ، إنه ليس فرقًا كبيرًا عن اللغات الأخرى. ليس أكثر من ذلك إذا كان هناك إعلان متغير ، فهو يكفي لاستخدام VAR.
المشغلين
+، -، *، /
هذا هو الحال مع هؤلاء المشغلين ، ينبغي للمرء الانتباه إلى +. يمكن أن تعمل على كل من السلاسل والعمليات العددية. على الرغم من أن اللغات من النوع الضعيف تقول أن الأنواع ضعيفة ، فقد تظهر الأرقام في بعض الأحيان في شكل سلاسل ، ويمكن أن تظهر السلاسل في بعض الأحيان في شكل قيم عددية ، ولكن عند الضرورة ، لا تزال بحاجة إلى التحدث عن نوعه. يمكننا استخدام الكود التالي لمعرفة النتائج:
نسخة الكود كما يلي:
var a = "1" ؛
var b = 2 ؛
console.log (a + b) ؛
console.log (parseint (a) + b) ؛
هنا ParseInt هي وظيفة مدمجة لـ Node.js ، والتي يتم استخدامها لتحليل سلسلة في متغير من النوع int.
نتيجة تنفيذ الرمز أعلاه هي:
نسخة الكود كما يلي:
12
3
ملاحظة: نتيجة وحدة التحكم الأولى. log هي 12. نظرًا لأن A عبارة عن سلسلة ، يتم إضافة B أيضًا كسلسلة بواسطة النظام. والنتيجة هي أن السلاسلان يتم لصقها معًا وتصبح 12. نتيجة وحدة التحكم الثانية. log هي 3 لأننا نقوم بتحويل الأول A إلى نوع int ، ونضيف متغيرين من نوع int ، أي إضافة القيم ، وبالطبع ، تكون النتيجة 3.
== ، == ،! = ،! ==
فيما يلي نقطة لتوضيح أنه عندما يكون طول هذا المشغل المنطقي 2 (== ،! =) ، فإنه يحدد فقط ما إذا كانت القيمة الخارجية هي نفسها ، ولكنها لا تحدد النوع. يحب
نسخة الكود كما يلي:
var a = 1 ، b = "1" ؛
console.log (a == b) ؛
نتيجة إخراجها صحيحة. ولكن إذا أضفنا علامة متساوية عندما نصدر أحكامًا في الوسط ، فسنصدر حكمًا صارمًا. سيكون هذا صحيحًا فقط عندما يكون النوع والقيمة متماثلين ، وإلا فسيكون ذلك خطأ. وهذا يعني
نسخة الكود كما يلي:
var a = 1 ، b = "1" ؛
console.log (a === b) ؛
عندما ، تكون النتيجة عائدًا خاطئة ، لأن A من النوع int ، في حين أن B عبارة عن سلسلة.
بالمناسبة ، دعنا نتحدث عن البيان المشروط. في الواقع ، إذا لم تكن هنا مختلفة عن اللغات الأخرى ، فهي مجرد مشكلة من علامتين متساويتين وثلاث علامات متساوية للعديد من المشغلين المنطقيين. لذلك لن أدلي ببيان متعب.
نوع
هنا سأعتبره مشغلًا بدلاً من وظيفة.
تتمثل وظيفة هذا المشغل في الحكم على نوع المتغير ، وستعود سلسلة ، أي اسم النوع. ستعرف ما إذا كنت تنفذ الرمز التالي:
نسخة الكود كما يلي:
وظيفة foo () {}
var a = 0 ؛
var b = 'shh ~ حساء زهرة البيض ينام. '
var c = 1.0 ؛
var d = foo ؛
var e = {"a": a} ؛
var f = [1 ، 2 ، 3] ؛
var g = null ؛
var h = غير محدد ؛
console.log (typeof a) ؛
console.log (typeof b) ؛
console.log (typeof c) ؛
console.log (typeof d) ؛
console.log (typeof e) ؛
console.log (typeof f) ؛
console.log (typeof g) ؛
console.log (typeof h) ؛
ستكون نتيجة التنفيذ هنا:
نسخة الكود كما يلي:
رقم
خيط
رقم
وظيفة
هدف
هدف
هدف
غير محدد
فارغ ، غير محدد ، نان
في JavaScript ، هناك ثلاث قيم خاصة ، كما هو موضح في العنوان. قد يكون الجميع على دراية بالواحد الأول. هناك أيضًا C/C ++ ، ولكنه يتم رسملة ، وجوهره هو واحد.
`` `c ++
تحديد فارغة 0
في جافا سكريبت ، تختلف معاني هذه القيم الثلاث.
### باطل ###
NULL هو كائن خاص ، مما يعني تقريبا فارغ. على سبيل المثال:
var a = null ؛
يمكن للجميع فهمه ، لذلك لن أشرح ذلك. ولكن على عكس C/C ++ ، فإن هذا الفارغ لا يساوي 0.
### غير محدد ###
ما يعنيه هذا الشيء هو أن هذا المتغير لم يتم الإعلان عنه. من أجل التمييز بشكل أفضل ، يكون رمز العينة الخاص بنا كما يلي:
`` `JavaScript
نسخة الكود كما يلي:
var a = {
"فو": NULL
} ؛
console.log (a ["foo"]) ؛
console.log (a ["bar"]) ؛
في الكود أعلاه ، نجعل قيمة ["foo"] فارغة ، أي ، فارغة. ولم يتم الإعلان عنها على الإطلاق ، فهي ليست فارغة. يجب أن يخمن الجميع نتائج الإخراج:
نسخة الكود كما يلي:
باطل
غير محدد
نان
هذه قيمة فارغة ، رقم خاص. اسمها الكامل ليس رقمًا. إنه غريب بعض الشيء. يمكنك فهمه كمتغير نوع الأرقام ليس نموذجًا رقميًا ، أو متغير نوع الأرقام مع الأخطاء.
غالبًا ما يحدث ذلك عندما يمكن للمستخدم أن يجعل متغيرًا مساوياً ل NAN من خلال إرجاع قيمة خطأ حتى يعلم الجميع أن الوظيفة قد خطأت في العملية.
متنوعة صغيرة
تشبه البيانات المتبقية الأخرى اللغات الموجودة الأخرى ، مثل Break ، Switch ، Found ، وما إلى ذلك.
نوع متغير
يتحدث هذا القسم بشكل أساسي عن كائنات JavaScript ، وأنواع أخرى تقريبًا هي نفسها.
النوع الأساسي
الأنواع الأساسية الواردة في Node.js هي على النحو التالي:
رقم
خيط
منطقية
صفيف
يمكن تعيين الأنواع الثلاثة الأولى مباشرة ، وتعيين الصفيف هو مجرد مهمة مرجعية. إذا تم تغيير قيمة معينة في متغير جديد ، فسيتغير أيضًا قيمة المتغير القديم. يمكنك تجربة الكود التالي مباشرة:
جافا سكريبت
var foo = [1 ، 2 ، 3] ؛
var bar = foo ؛
شريط [0] = 3 ؛
console.log (foo) ؛
ينتج عنه:
جافا سكريبت
[3 ، 2 ، 3]
بمعنى آخر ، إذا تم نسخ صفيف في صفيف جديد ، فلا يمكن استخدامه لتعيين القيم مباشرة ، ولكن يجب "نسخه بعمق".
هنا نحتاج إلى التحدث عن الطرق الثلاث لإنشاء صفيف.
النوع الأول:
جافا سكريبت
نسخة الكود كما يلي:
var dog = new array () ؛
الكلب [0] = "shh ~" ؛
الكلب [1] = "حساء زهرة البيض" ؛
الكلب [2] = "النوم" ؛
النوع الثاني:
جافا سكريبت
نسخة الكود كما يلي:
var dog = new Array ("shh ~" ، "Egg Flower Soup" ، "Sleeping") ؛
النوع الرابع:
جافا سكريبت
نسخة الكود كما يلي:
var dog = [
"shh ~" ،
"حساء زهرة البيض" ،
"نائم"
] ؛
أنا شخصياً أفضل الطريقة الثالثة للكتابة ، وهي موجزة نسبيًا.
كائنات JSON
هنا أخرج كائن JSON بشكل منفصل بدلاً من تصنيفه ككائن JavaScript. إذا كنت أعتقد أنني مضللة بعض الشيء ، يمكنني تخطي هذا القسم مباشرة.
تمييزي بين كائنات JSON وكائنات JavaScript هو ما إذا كان يتم استخدامه لتخزين البيانات فقط ، بدلاً من تثبيت الفصل. في الواقع ، فإن جوهر JSON هو تدوين جافا سكريبت كائن.
لمزيد من المعلومات حول JSON ، يرجى الموسوعة بنفسك.
إعلان كائن JSON في Node.js بسيط للغاية:
جافا سكريبت
نسخة الكود كما يلي:
var dog = {
"Pre": "Shh ~" ،
"sub": {
"الاسم": "حساء زهرة البيض" ،
"Act": "النوم" ،
"الوقت": 12
} ،
"suf": ["قلت" ، "إنه نائم" ، "إنه نائم"]
} ؛
هناك طريقتان للحصول على القيمة الرئيسية لاسم مفتاح معين في كائن JSON. الأول هو توصيله بالنقاط ، والثاني هو استخدام الأقواس:
جافا سكريبت
نسخة الكود كما يلي:
كلب
.
كلب ["قبل"] ؛
ملاحظة: عند استخدام النقاط أعلاه ، يتم اتباع المفتاح في JSON مباشرة. إذا تعاملت مع المفتاح كمتغير ، يمكنك فقط تجربته مع الكلب [المفتاح]: الآن يمكنك تجربته بنفسك واستخدامه ... في اجتياز كائن JSON أعلاه. لا تنس استخدام typeof ~
أساس فئة (كائن)
بالمعنى الدقيق للكلمة ، لا يمكن اعتبار فئة Node.js فئة. في الواقع ، إنها مجرد مجموعة من الوظائف ، إضافة بعض متغيرات الأعضاء. جوهرها هو في الواقع وظيفة.
ومع ذلك ، من أجل الفطرة السليمة ، سوف نسميها "الفصل" التالي ولاحقًا ، ويسمى "كائن".
نظرًا لأن الفصل الدراسي يحتوي على العديد من الوظائف ، أو جوهره هو وظيفة ، فقد نتحدث عن أساسيات الوظيفة عندما لا نكون حذرين.
إعلان وتثبيت الطبقات
إعلان الفصل بسيط للغاية ، لا تضحك:
جافا سكريبت
وظيفة foo () {
// ...
}
حسنًا ، لقد كتبنا فئة فو.
صحيح أم مزيف؟ ! حقيقي.
لا تصدق ذلك؟ إذا كنت لا تصدق ذلك ، يمكنك كتابة رمز وقراءته:
جافا سكريبت
var bar = new foo () ؛
لا تنظر إليها كدالة ، إذا كانت مكتوبة في مثل هذا النموذج (جديد) ، فهي مثيل لهذه الفئة.
وهذا ما يسمى FOO () هو في الواقع مُنشئ فئة FOO ().
متغيرات الأعضاء
هناك طريقتان جيدتان للحصول على متغيرات الأعضاء.
الأول هو استخدام هذا. <اسم متغير> في مُنشئ الفئة أو أي مُنشئ. يمكنك إعلان متغير عضو في أي وقت ، ولن يؤثر على الاستخدام في الخارج. على أي حال ، حتى لو كنت تستخدمه عندما لا يتم الإعلان عنه ، فسيكون هناك غير محدد لدعمه. لذلك هذه هي الطريقة الأولى:
نسخة الكود كما يلي:
جافا سكريبت
وظيفة foo () {
this.hello = "World" ؛
}
ملاحظة: هذا هو المتغير العضو لفئة الاتصال فقط عند إضافة ذلك ، وإلا فهو مجرد متغير محلي في الوظيفة. من الضروري تمييز ما إذا كان هناك نطاق عمل هذا المتغير.
الطريقة الثانية هي إعلانها خارج المُنشئ أو أي وظيفة عضو ، وتنسيقه هو <name class> .prototype. <name variable>:
جافا سكريبت
نسخة الكود كما يلي:
وظيفة foo () {
// ...
}
foo.prototype.hello = "World" ؛
بغض النظر عن أي من الطريقة المذكورة أعلاه هو إعلان متغيرات الأعضاء ، يمكننا أن نرى التأثير:
جافا سكريبت
نسخة الكود كما يلي:
var bar = new foo () ؛
console.log (bar.hello) ؛
يمكنك حتى تعديل هذا الفصل مثل هذا:
جافا سكريبت
نسخة الكود كما يلي:
وظيفة foo () {
this.hello = "World" ؛
}
foo.prototype.hello = "حساء زهرة البيض" ؛
ثم استخدم الكود أعلاه لإخراجه.
فكر في سبب كون الإخراج هو العالم بدلاً من حساء البيض.
مُنشئ
لقد قلنا من قبل أن FOO () هو في الواقع مُنشئ. ثم من الواضح أنه يمكننا تمرير المعلمات إلى المُنشئ ، لذلك لدينا الكود التالي:
جافا سكريبت
نسخة الكود كما يلي:
// الكود 2.1
وظيفة foo (مرحبا) {
if (hello === undefined) {
this.hello = "World" ؛
} آخر {
this.hello = مرحبا ؛
}
}
نرى حكمًا غريبًا على ذلك (مرحبًا === غير محدد). ما هو استخدام هذا الحكم؟ الاحتمال الأول هو أن المطور أرسل خصيصًا غير محدد في الألم. في هذا الوقت ، هو غير محدد.
هناك موقف آخر. قلنا منذ البداية أن JavaScript هي لغة ضعيفة من النوع. في الواقع ، فهي ليست مجرد نوع ضعيف ، ولكن معلمات الإرسال الخاصة بها غير قابلة للغاية أيضًا. يمكنك المرور أكثر أو أقل (طالما أنك تأكد من أن البرنامج لا يرتكب أي أخطاء عندما تمر أكثر أو أقل) ، فهو على ما يرام من حيث المبدأ. سيتم تجاهل معلمات التمريرات المتعددة تلقائيًا ، في حين سيتم استكمال معلمات عدد قليل من التمريرات مع غير محددة.
فقط انظر إلى الكود التالي وسوف تفهم:
جافا سكريبت
نسخة الكود كما يلي:
// Connect Code 2.1 On
var bar1 = new foo () ؛
var bar2 = new foo ("حساء زهرة البيض") ؛
يرجى إخراج اثنين من البار Hello متغيرات بنفسك ، وسوف تجد أن أحدهما هو العالم والآخر هو حساء البيض. من الواضح ، عندما تم الإعلان عن BAR1 الأول لدينا ، كان يعتبر تلقائيًا بواسطة Node.js:
جافا سكريبت
نسخة الكود كما يلي:
var bar1 = new foo (غير محدد) ؛
لذلك هناك قول أنه عالم.
أيضًا في هذا المُنشئ ، نرى أن المعلمة التي تم تمريرها هي Hello ، وهناك متغير عضو في هذه الفئة هذا. ومع ذلك ، فقد قلنا من قبل أن النطاق مختلف عندما يكون هناك وهذا ليس كذلك. يتم استخدام هذه المعلمة فقط في المنشئ ، في حين أن المعلمة مع هذا هو متغير عضو. استخدم هذا لتمييزها على الفور ، لذلك لا يهم حتى لو كان الاسم نفسه.
وظائف الأعضاء
إعلان وظيفة العضو
يشبه إعلان دالة العضو طريقة الإعلان الثاني لمتغير العضو ، أي <اسم الفئة> .prototype.
جافا سكريبت
نسخة الكود كما يلي:
// Connect Code 2.1 On
وظيفة sethello (مرحبا) {
this.hello = مرحبا ؛
}
foo.prototype.sethello = sethello ؛
Bar1.Sethello ("كعكة البيض") ؛
نظرًا لأن الكود أعلاه واضح ، فإننا ننفذ وظيفة Sethello لفئة FOO ، والتي من خلالها يمكننا تعديل قيمة foo.hello.
لكن أليس من المزعج بعض الشيء أن تكتب مثل هذا؟ بعد ذلك ، سأتحدث عن ميزة مهمة في وظائف JavaScript.
★ وظائف مجهولة ★
في كثير من الأحيان ، تتم الرجوع إلى بعض وظائفنا فقط أو استدعاءها في مكان واحد ، لذلك من المفيد جدًا إعطاء هذه الوظيفة اسمًا ، وليس هناك حاجة ، لذلك يمكننا كتابة هذه الوظيفة مؤقتًا واطلب من الشخص الذي يشير إليها إلى الرجوع إليها ، والشخص الذي يدعوها للاتصال بها. لذلك ، يمكن للوظيفة حذف اسم الوظيفة ، مثل:
جافا سكريبت
نسخة الكود كما يلي:
وظيفة (مرحبا) {
this.hello = مرحبا ؛
}
أما بالنسبة لكيفية الاقتباس أو الاتصال به؟ إذا كان هناك حاجة إلى اقتباس الفصل أعلاه ، فهو مكتوب على هذا النحو:
جافا سكريبت
نسخة الكود كما يلي:
foo.prototype.sethello = function (hello) {
this.hello = مرحبا ؛
}
طريقة الكتابة هذه هي نفس إعلان وظيفة العضو ، وتوفر الكثير من التعليمات البرمجية. وفي الواقع ، يتم الإعلان عن إعلان وظائف الأعضاء في الفصل في هذه الطريقة للوظائف المجهولة.
أما بالنسبة لكيفية جعل وظائف مجهولة تسمى؟ عادة ما يتم كتابة هذا مثل هذا عند تمرير وظيفة لا تسمى سوى وظيفة معينة.
على سبيل المثال ، لدينا نموذج أولي للوظيفة:
جافا سكريبت
نسخة الكود كما يلي:
/**
* سوف نمر في متغيرين A و B ،
* بعد حساب قيمة A+B ، سلمها إلى Func (NUM)
* انتقل إلى الإخراج
*/
وظيفة sumab (a ، b ، func) {
var c = a + b ؛
func (a ، b ، c) ؛
}
على سبيل المثال ، لدينا نسختان من وظائف الإخراج ، أحدهما هو الناتج الصيني والآخر هو الناتج الإنجليزي. لذلك إذا لم نستخدم وظائف مجهولة:
جافا سكريبت
نسخة الكود كما يلي:
وظيفة ZH (A ، B ، SUM) {
قيمة console.log (a + " +" + b + "هي:" + sum) ؛
}
وظيفة en (a ، b ، sum) {
console.log (A + "Plus" + B + "IS" + sum) ؛
}
sumab (1 ، 2 ، Zh) ؛
sumab (3 ، 4 ، en) ؛
قم بتنفيذ هذا الرمز مرة واحدة ، وسيكون الإخراج:
قيمة 1 + 2 هي: 3
3 زائد 4 هو 7
إذا كان هذا الرمز في شكل وظائف مجهولة ، فسيكون ذلك:
جافا سكريبت
نسخة الكود كما يلي:
sumab (1 ، 2 ، الوظيفة (A ، B ، Sum) {
قيمة console.log (a + " +" + b + "هي:" + sum) ؛
}) ؛
sumab (3 ، 4 ، وظيفة (A ، B ، Sum) {
console.log (A + "Plus" + B + "IS" + sum) ؛
}) ؛
يستخدم هذا النموذج عادة في وظائف رد الاتصال. آلية رد الاتصال هي جوهر Node.js أو JavaScript. سأقدمها في الفصول المستقبلية.
كيفية إعلان وظيفة مجهولة في إعلان وظيفة الأعضاء
على الرغم من أنني تحدثت عن ذلك في القسم السابق ، إلا أنني سأتحدث عنه مرة أخرى.
عادة ، عندما نعلن وظيفة عضو في الفصل ، نستخدم وظائف مجهولة للإعلان عنها ، لأن هذه الوظيفة هي مجرد وظيفة عضو في هذه الفئة ولن يتم الرجوع إليها أو استدعاءها بشكل منفصل في أماكن أخرى ، وبالتالي فإن الكود التالي متاح:
جافا سكريبت
نسخة الكود كما يلي:
// Connect Code 2.1 On
foo.prototype.sethello = function (hello) {
this.hello = مرحبا ؛
}
وبهذه الطريقة ، لدينا وظيفة Sethello في فئة فو.
2.3.4. الطبقة العشوائية
هذا هو هراء مرة أخرى. يعني ما يسمى العشوائية للفصول أنه في JavaScript في JavaScript ، يمكنك تعديل الفصل في أي مكان ، والذي يحتوي على أوجه تشابه معينة مع Ruby.
على سبيل المثال ، السلسلة هي في الواقع فئة ، مع متغيرات الأعضاء مثل الطول ، ووظائف الأعضاء مثل indexOF و SUNSTR. ولكن إذا اعتقدنا أن بعض أجزاء هذه السلسلة ليست مثالية وتريد إضافة طريقتنا الخاصة ، فيمكننا إضافة وظيفة إلى حيث تريد ، مثل:
جافا سكريبت
نسخة الكود كما يلي:
string.prototype.sb = function () {
var newsstr = "" ؛
لـ (var i = 0 ؛ i <this.length ؛ i ++) {
إذا (i ٪ 2 === 0) NewsR += "s" ؛
Else Newr += "B" ؛
}
إرجاع الأخبار ؛
} ؛
معنى هذه الوظيفة هو ملء سلسلة لجعلها في تجسد SB.
دعونا نختبره:
نسخة الكود كما يلي:
var str = "شورب زهرة البيض شه ~ نائم." ؛
console.log (str.sb ()) ؛
ستحصل على النتيجة التالية:
SBSBSBSBSBSBSBS
إذا قلت "حساء زهرة البيض ينام". سيوبخك جهاز الكمبيوتر لك لكونك أحمق أربع مرات ونصف. (تحطيمها بسرعة)
3. مرفق
3.1. نسخة عميقة
تتمثل النسخة العميقة المزعومة في إنشاء صفيف أو كائن جديد بنفسك ، ونسخ القيم المتغيرة من النوع الأساسية يدويًا في صفيف المصدر أو الكائن واحدًا تلو الآخر ، بدلاً من مجرد أخذ المراجع إلى صفيف المصدر أو الكائن. لذلك يتضمن هذا مكالمة متكررة أو شيء من هذا القبيل.
فيما يلي وظيفة نسخة عميقة قمت بتطبيقها. يمكنك كتابة واحدة خاصة بك وإضافتها إلى قاعدة المعرفة node.js الخاصة بك.
جافا سكريبت
نسخة الكود كما يلي:
وظيفة cloneObject (SRC) {
var dest = {} ؛
لـ (VAR Key in SRC) {
if (typeof src === "object") dest [key] = cloneObject (src [key]) ؛
آخر القدر [مفتاح] = src [مفتاح] ؛
}
إعادة القدر
}