يجب أن تكون المتغيرات المحددة خارج الوظيفة متغيرات عالمية ؛ المتغيرات المحددة داخل الوظيفة ، إذا تم إعلان VAR ، فإن المتغير هو متغير محلي. إذا لم يتم الإعلان عن VAR ، فإن المتغير هو متغير عالمي.
1. المتغيرات العالمية والمحلية جافا سكريبت var global = "global" ؛ test () ؛ function test () {var local = "local" ؛ document.writeln (Global) ؛ document.writeln (local) ؛} document.writeln (global) ؛ document.writeln (local) ؛2. نوعان من ملفات تعريف الارتباط
ط) سيتم تخزين ملفات تعريف الارتباط المستمرة على القرص الصلب للعميل.
2) رد فعل ملف تعريف الارتباط: لن يتم تخزينه على القرص الثابت للعميل ، ولكن سيتم وضعه في ذكرى عملية المتصفح. عندما يتم إغلاق المتصفح ، سيتم تدمير ملف تعريف الارتباط.
3. في جافا سكريبت ، الوظيفة هي كائن
4. في جافا سكريبت ، لا يوجد مفهوم للطريقة (الوظيفة) الزائد
5. كائن الوظيفة
يوجد كائن دالة في JavaScript ، وجميع الوظائف المخصصة من نوع كائن الوظيفة. جميع المعلمات المقبولة من قبل كائن الوظيفة هي من نوع السلسلة ، والمعلمة الأخيرة هي هيئة الوظيفة التي سيتم تنفيذها ، والمعلمة السابقة هي المعلمات التي تحتاج الوظيفة حقًا إلى قبولها.
6. حجج الكائن الضمنية
في JavaScript ، كل وظيفة لها وسيطات كائن ضمنية ، تمثل المعلمات التي تم تمريرها فعليًا إلى الوظيفة. وسيطات. الطول يمثل عدد المعلمات التي تم تمريرها بالفعل.
7. اسم الوظيفة. الطول
يحتوي كل كائن دالة على سمة طول ، مما يشير إلى عدد المعلمات التي تتوقع أن تقبلها الوظيفة. إنه يختلف عن وسيطات الوظائف. يمثل الطول. الطول عدد المعلمات المقبولة فعليًا بواسطة الوظيفة.
8. هناك خمسة أنواع بيانات بدائية في JavaScript
غير محدد ، لاغية ، منطقية ، العدد ، والسلسلة. (ملاحظة: في JavaScript ، لا يوجد نوع بيانات Char)
هناك قيمة واحدة فقط لنوع البيانات غير المحدد: غير محدد ؛
هناك قيمة واحدة فقط لنوع البيانات الخالية: فارغة ؛
هناك قيمتان لنوع البيانات المنطقية: صواب وكاذب ؛
9. عامل typeof
Typeof هو مشغل أحادي تليها اسم المتغير. يتم استخدامه للحصول على نوع بيانات المتغير. قيم الإرجاع الخاصة بها هي: غير محددة ، منطقية ، العدد ، السلسلة والكائن.
10. في JavaScript ، إذا لم تعلن الوظيفة عن قيمة الإرجاع ، فستقوم بإرجاع العلاقة بين undefined11 ، فارغة وغير محددة
غير محدد مشتقة بالفعل من فارغة. على سبيل المثال:
العلاقة بين الفارغ وغير المحددة
جافا سكريبت
تنبيه (غير محدد == فارغ) ؛ // يعيد المتصفح صحيحًا
11. تحويل النوع القسري
هناك 3 يلقي في JavaScript: Boolean (القيمة) ، الرقم (القيمة) ، السلسلة (القيمة).
12. كائن كائن
في JavaScript ، يتم توريث جميع الكائنات من كائنات الكائنات.
كائن كائن
جافا سكريبت
var object = new Object () ؛ for (var v in Object) {Alert (v) ؛}في الكود أعلاه ، لا يطبع المتصفح أي شيء ، وهذا لا يعني أن كائن الكائن لا يحمل أي سمات. يختبر الكود التالي ما إذا كان يمكن تعداد الخصائص الموجودة في كائن الكائن. إذا تم إرجاع خطأ ، فهذا يعني أنه لا يمكن تعداد الخصائص الموجودة في الكائن.
لا يمكن تعداد الخصائص في كائنات الكائنات
جافا سكريبت
التنبيه (object.propertyisEnumerable ("النموذج الأولي")) ؛إذا ظهر المتصفح مربع حوار خاطئ ، فهذا يعني أنه لا يمكن تعداد الخصائص الموجودة في كائن الكائن.
بعد ذلك ، دعنا نرى ما إذا كان يمكن تعداد الخصائص الموجودة في كائن النافذة.
الخصائص في كائنات النوافذ لا يمكن التعرف عليها
جافا سكريبت
لـ (var v في النافذة) {console.log (v) ؛}في Chrome ، سنرى الكثير من الخصائص المطبوعة في وحدة التحكم في تصحيح التصحيح ، مما يشير إلى أنه يمكن تعداد الخصائص الموجودة في كائن النافذة.
13. في JavaScript ، يمكنك إضافة سمات كائن أو ديناميكيًا أو حذف سمات كائن ديناميكيًا.
إضافة/إزالة خصائص الكائنات ديناميكية
جافا سكريبت
var object = new Object () ؛ ALERT (Object.Username) ؛ // undefined Object.Username = "Zhangsan" ؛ ALERT (Object.Username) ؛ // Zhangsan Object ["Password"] = "123" ؛ ALERT (object.password) ؛ // 123 dellete object.username ؛ // infective.
14. الطريقة الأكثر شيوعًا لتحديد الكائنات في جافا سكريبت
الطريقة الأكثر شيوعا لتحديد الكائنات
جافا سكريبت
var object = {username: "Zhangsan" ، كلمة المرور: 12345} ؛ ALERT (Object.userName) ؛ ALERT (Object.Password) ؛15. صفيف
تعريف الصفيف
جافا سكريبت
// method 1 var array = new array () ؛ array.push (1) ؛ array.push (2) ؛ array.push (3) ؛ Alert (Array.Length) ؛ // الطريقة 2 (موصى بها) var array = [1،25،4] ؛ array.sort () ؛ Alert (Array) ؛
استدعاء طريقة Sort () للمصفوفة ، وطباعة المتصفح 1 ، 25 ، 4 ، وهي ليست النتيجة التي نتوقعها.
بالنسبة إلى طريقة الفرز لصفيف JavaScript ، سيتم أولاً تحويل المحتوى ليتم فرزه إلى سلسلة (تسمى طريقة ToString ()) وفرزها بترتيب السلاسل.
يمكن أن تحصل الطريقة التالية على النتائج التي نتوقعها (مرتبة حسب حجم الصفيف):
فرز الصفيف
جافا سكريبت
دالة مقارنة (num1 ، num2) {var temp1 = parseint (num1) ؛ var temp2 = parseint (num2) ؛ if (temp1 <temp2) {return -1 ؛ } آخر إذا (temp1 == temp2) {return 0 ؛ } آخر {return 1 ؛ }} var array = [1،25،3] ؛ array.sort (مقارنة) ؛ التنبيه (صفيف) ؛ثم ننفذها في وظائف مجهولة:
فرز وظيفة مجهول
جافا سكريبت
صفيف var = [1،25،3] ؛ Array.sort (function (num1 ، num2) {var temp1 = parseint (num1) ؛ var temp2 = parseint (num2) ؛ if (temp1 <temp2) {return -1 ؛} else if (temp1 == temp2) {return 0 ؛} else {return 1 ؛}}) ؛ تنبيه (صفيف) ؛16. خمس طرق لتحديد الكائنات في JavaScript (لا يوجد مفهوم للفئات في JavaScript ، فقط الكائنات) i) توسيع خصائصها وطرقها بناءً على الكائنات الموجودة
قم بتوسيع خصائصها وطرقها بناءً على الكائنات الموجودة
جافا سكريبت
var object = new Object () ؛ // إضافة اسم السمة. name = "Zhangsan" ؛ // إضافة method sayname object.sayname = function (name) {this.name = name ؛ التنبيه (this.name) ؛} ؛ object.sayname ("Kyle") ؛ // استدعاء طريقة sayname ، يتم تعديل سمة الاسم إلى Kyle ، وسيقوم المتصفح بطباعة Kyleأبسط طريقة ليست ملائمة للاستخدام وهي مناسبة لطلب كائن مؤقتًا.
2) إنشاء كائنات في المصنع
طريقة المصنع بدون معلمات:
جافا سكريبت
// factory methion function createObject () {var object = new Object () ؛ // إنشاء كائن كائن. name = "zhangsan" ؛ // إضافة اسم سمة اسم. password = "123" ؛ // إضافة كائن سمة كلمة مرور. } ؛ إرجاع كائن ؛ // إرجاع هذا الكائن} var object1 = createObject () ؛ // Calendar طريقة CreateObject Factory لإنشاء Object1var Object2 = createObject ()طريقة المصنع مع المعلمات:
جافا سكريبت
وظيفة createObject (الاسم ، كلمة المرور) {var object = new Object () ؛ object.name = name ؛ object.password = password ؛ object.get = function () {Alert (this.name+"،"+this.password) ؛ } ؛ كائن الإرجاع ؛} var object1 = createObject ("Zhangsan" ، "123") ؛ var object2 = createObject ("lisi" ، "456") ؛ object1.get () ؛ object2.get () ؛عيوب الطريقتين أعلاه بدون معلمات ومع المعلمات:
في كل مرة يتم فيها إنشاء كائن ، يتم إنشاء طريقة GET في الذاكرة ، وهي مضيعة للذاكرة وتؤثر على الأداء. وتوقعنا هو إنشاء كائنين مختلفين تختلف خصائصهما ، ولكن تتم مشاركة الأساليب. لذلك بعد ذلك نحتاج إلى تحسين طريقة CreateObject Factory.
تحسين نهج المصنع:
جافا سكريبت
وظيفة get () {Alert (this.name+"،"+this.password) ؛} وظيفة createObject (الاسم ، كلمة المرور) {var object = new Object () ؛ object.name = name ؛ object.password = password ؛ object.get = get ؛ كائن الإرجاع ؛} var object1 = createObject ("Zhangsan" ، "123") ؛ var object2 = createObject ("lisi" ، "456") ؛ object1.get () ؛ object2.get () ؛حدد طريقة GET خارج وظيفة CreateObject ، بحيث تتم مشاركة طريقة GET لكل كائن تم إنشاؤه. قم بعمل مشاركة كائن دالة بواسطة كائنات متعددة ، بدلاً من كل كائن له كائن دالة.
3) طريقة مُنشأة لإنشاء كائن
مُنشئ بدون معلمات:
جافا سكريبت
وظيفة person () {// قبل تنفيذ السطر الأول من التعليمات البرمجية ، سيقوم محرك JS بإنشاء كائن لنا this.name = "Zhangsan" ؛ this.password = "123" ؛ this.getInfo = function () {Alert (this.name+"،"+this.password) ؛ } ؛ )مُنشئ مع المعلمات
جافا سكريبت
وظيفة الشخص (الاسم ، كلمة المرور) {this.name = name ؛ this.password = كلمة المرور ؛ this.getInfo = function () {Alert (this.name+"،"+this.password) ؛ ؛4) النموذج الأولي (النموذج الأولي) إنشاء الكائن
النموذج الأولي هو خاصية في الكائن
النموذج الأولي
جافا سكريبت
وظيفة person () {} person.prototype.name = "Zhangsan" ؛ person.prototype.password = "123" ؛ person.prototype.getInfo = function () {Alert (this.name+"،"+this.password) ؛} ؛ var p1 = new person () ؛ var p2 = new person () ؛ p1.name = "kyle" ؛ // بعد إنشاء الكائن ، قم بتغيير السمة p1.getinfo () ؛ p2.getInfo () ؛هناك مشكلتان في استخدام النماذج الأولية ببساطة: أولاً ، لا يمكنك تعيين القيم الأولية للسمات في المنشئ ، ويمكنك فقط تغيير قيم السمة بعد إنشاء الكائن.
النموذج الأولي
جافا سكريبت
وظيفة person () {} person.prototype.name = new array () ؛ person.prototype.password = "123" ؛ person.prototype.getInfo = function () {Alert (this.name+"،"+this.password) ؛} ؛ var p1 = new person () ؛ var p2 = new person () ؛ p1.name.push ("Zhangsan") ؛ p1.name.push ("lisi") ؛ p1.password = "456" ؛ p1.getinfo () ؛ p2.getinfo ()سوف يطبع المتصفح: Zhangsan ، Lisi ، 456 و Zhangsan ، Lisi ، 123.
إذا تم إنشاء كائن باستخدام طريقة النموذج الأولي ، فستشارك جميع الكائنات التي تم إنشاؤها الخصائص في النموذج الأولي ، وإذا قام كائن بتغيير الخاصية ، فسيتم أيضًا انعكاسه في كائنات أخرى. لذلك ، لا يمكن ببساطة استخدام طريقة النموذج الأولي ، كما يجب دمجها مع طرق أخرى. سوف نستمر في تقديمه بعد ذلك.
استخدم النموذج الأولي + مُنشئ لتحديد الكائنات
جافا سكريبت
وظيفة person () {this.name = new Array () ؛ this.password = "123" ؛} person.prototype.getInfo = function () {Alert (this.name+"،"+this.password) ؛} ؛ var p1 = new person () ؛ var p2 = new person () ؛ p1.name.push ("Zhangsan") ؛ p2.name.push ("lisi") ؛ p1.getinfo () ؛ p2.getInfo () ؛استخدم طريقة النموذج الأولي + مُنشئ لتحديد الكائنات. لا تتداخل الخصائص بين الكائنات مع بعضها البعض ، ويشارك كل كائن نفس الطريقة. هذه طريقة أفضل.
5) طريقة النموذج الأولي الديناميكي
جافا سكريبت
وظيفة person () {this.name = "Zhangsan" ؛ this.password = "123" ؛ if (typeof person.flag == "undefined") {Alert ("voked") ؛ person.prototype.getInfo = function () {Alert (this.name + "،" + this.password) ؛ } person.flag = true ؛ }} var p1 = new person () ؛ var p2 = new person () ؛ p1.getInfo () ؛ p2.getInfo () ؛في طريقة النموذج الأولي الديناميكي ، في المُنشئ ، تشترك جميع الكائنات في طريقة من خلال كميات العلم ، ولكل كائن سماته الخاصة. عندما يقوم الرمز أعلاه بإنشاء كائن لأول مرة ، فإنه يستخدم أولاً عبارة حكم لمعرفة ما إذا كانت سمة العلامة قد تم تعريفها. إذا لم يتم تعريفه ، أضف طريقة getInfo من خلال النموذج الأولي ، ثم اضبط العلامة على True. ثم عندما يتم إنشاء الكائن في المرة الثانية ، يتم الحكم على البيان على أنه خطأ وتخطي التنفيذ. هذا يحقق النتيجة المطلوبة ، لا تتداخل خصائص الكائن التي تم إنشاؤها مع بعضها البعض ، ويتم مشاركة طرق الكائن.
17. ميراث الأشياء في JavaScript (5 طرق)
الطريقة الأولى: انتحال شخصية الكائن
تقليد ميراث الكائن
جافا سكريبت
// ترد وظيفة الفئة الوالدين (اسم المستخدم) {this.userName = اسم المستخدم ؛ this.sayhello = function () {Alert (this.userName) ؛ } ؛} // وظيفة الفئة الفرعية (اسم المستخدم ، كلمة المرور) {// الأسطر الثلاثة التالية من الكود هي الأكثر أهمية this.method = parent ؛ this.method (اسم المستخدم) ؛ حذف هذا. this.password = كلمة المرور ؛ this.sayworld = function () {Alert (this.password) ؛ } ؛} var p = New Parent ("Zhangsan") ؛ var c = طفل جديد ("Lisi" ، "123") ؛ P.Sayhello () ؛ C.Sayhello () ؛ C.Sayworld ()الطريقة الثانية: Call ()
طريقة التنفيذ الثانية للميراث ، طريقة الاتصال ، طريقة الاتصال هي طريقة محددة في كائن الوظيفة ، لذلك كل وظيفة نحددها لديها هذه الطريقة. سيتم تمرير المعلمة الأولى لطريقة الاتصال إلى هذا في الوظيفة ، بدءًا من المعلمة الثانية ، وتعيينها للمعلمات في الدالة واحدة تلو الأخرى.
نداء وراثة فئة الوالدين
جافا سكريبت
اختبار الوظيفة (str) {Alert (this.name+"،"+str) ؛} var object = new Object () ؛ object.name = "zhangsan" ؛ // test.call مكافئ لاستدعاء وظيفة الاختبار.بعد ذلك ، نستخدم طريقة الاتصال لتنفيذ ميراث الكائن
جافا سكريبت
// ترد وظيفة الفئة الوالدين (اسم المستخدم) {this.userName = اسم المستخدم ؛ this.sayhello = function () {Alert (this.userName) ؛ } ؛} // وظيفة الفئة الفرعية (اسم المستخدم ، كلمة المرور) {parent.call (هذا ، اسم المستخدم) ؛ this.password = كلمة المرور ؛ this.sayworld = function () {Alert (this.password) ؛ } ؛} var p = New Parent ("Zhangsan") ؛ var c = طفل جديد ("Lisi" ، "123") ؛ P.Sayhello () ؛ C.Sayhello () ؛ C.Sayworld () ؛الطريقة الثالثة: تطبيق ()
تطبيق وراثة فئة الوالدين
جافا سكريبت
// ترد وظيفة الفئة الوالدين (اسم المستخدم) {this.userName = اسم المستخدم ؛ this.sayhello = function () {Alert (this.userName) ؛ } ؛} // وظيفة الفئة الفرعية (اسم المستخدم ، كلمة المرور) {parent.apply (هذا ، صفيف جديد (اسم المستخدم)) ؛ this.password = كلمة المرور ؛ this.sayworld = function () {Alert (this.password) ؛ } ؛} var p = New Parent ("Zhangsan") ؛ var c = طفل جديد ("Lisi" ، "123") ؛ P.Sayhello () ؛ C.Sayhello () ؛ C.Sayworld () ؛طريقة التطبيق تشبه إلى حد كبير طريقة الاتصال. طريقة التطبيق هي أيضًا طريقة محددة في كائن دالة ، لذلك كل وظيفة نحددها لها هذه الطريقة.
هناك فرق بين طريقة التطبيق وطريقة الاتصال: parent.apply (هذا ، صفيف جديد (اسم المستخدم)) ؛ المعلمة الثانية التي تم تمريرها هي صفيف ، بينما اجتازت طريقة الاتصال بعض معلمات البيانات المنفصلة. لا يمكن القول أن هاتين الطريقتين جيدان وسيئان ، ويعتمد ذلك على سيناريو الاستخدام المحدد.
الطريقة الرابعة: طريقة سلسلة النموذج الأولي (لا يمكن نقل المعلمات إلى المُنشئ)
ميراث سلسلة النموذج الأولي
جافا سكريبت
دالة Parent () {} parent.prototype.hello = "hello" ؛ parent.prototype.sayhello = function () {Alert (this.hello) ؛} ؛ وظيفة child () {} child.prototype = new parent () ؛ child.prototype.world = "world" ؛ child.prototype.sayworld = function () {Alert (this.world) ؛} ؛ var c = New Child () ؛ C.Sayhello () ؛ C.Sayworld () ؛عيوب استخدام طريقة سلسلة النموذج الأولي: لا توجد طريقة لتمرير المعلمات ، يمكنك الانتظار فقط حتى يتم إنشاء الكائن قبل تعديله. دعنا نحل هذه المشكلة بالاقتران مع طرق أخرى.
الطريقة الخامسة: الطريقة المختلطة (الموصى بها)
استخدم الطرق الهجينة لتنفيذ ميراث الكائن
جافا سكريبت
وظيفة Parent (Hello) {this.hello = hello ؛} parent.prototype.sayhello = function () {Alert (this.hello) ؛} function (hello ، world) {parent.call (this ، hello) ؛ this.world = world ؛} child.prototype = new parent () ؛ child.prototype.sayworld = function () {Alert (this.world) ؛} var c = new child ("Hello" ، "World") ؛ C.Sayhello () ؛الملخص أعلاه لنقاط معرفة JavaScript الأساسية (الموصى بها) هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.