يصف هذا المثال استخدام وظيفة JS هذا. شاركه للرجوع إليه. التفاصيل كما يلي:
عند كتابة الوظائف في JS ، يتم استخدام هذا كثيرًا. ما هذا بالضبط؟ هذه كلمة رئيسية ، مؤشر ، يشير إلى نطاق بيئة التنفيذ ، والمعروفة أيضًا باسم السياق.
دعنا نتحدث عن الوظائف أولاً. أنا شخصياً أفهم أن الوظائف هي كتل التعليمات البرمجية التي تسمى مرارًا وتكرارًا في اللغة.
في JS ، عندما يتم تعيين وظيفة لخصائص الكائن ، يطلق عليها طريقة
يحب:
var m = {} ؛ m.title = 'title' ؛ m.show = function () {Alert (this.title)} M.Show ()إنها تسمي الوظيفة كطريقة الكائن M
في هذه الحالة ، يشير هذا إلى الكائن م.
يسمى اسم وظيفة الاتصال المباشر وظيفة:
var a = 1212 ؛ وظيفة show () {Alert (a) // 1212} show () // 1212في بيئة عالمية ، يمكن فهم المتغيرات العالمية على أنها خصائص نافذة ، والوظائف العالمية هي طرق نافذة
انظر المثال التالي:
var m = {} ؛ m.id = 'mmm' ؛ m.show = function () {Alert (this.id) ؛} var a = {} ؛ a.id = 'aaa' ؛ a.show = m.show ؛ a.show () ؛ //aaaa.show=m.show ؛ فهم هذه الجملة أولاً ، لأن الوظيفة هي كائن ، m.show = function () {Alert (this.id)}هذا التعبير يعادل الإشارة إلى A.Show و M.Show في نفس الوقت
Function () {Alert (this.id)}في الواقع يعادل
a.show = function () {Alert (this.id)}لذلك عندما يتم استدعاء A.Show () ، يشير هذا إلى كائن أ ،
انظر إلى الكستناء التالي
var m = {} ؛ m.id = 'mmm'm.show = function () {Alert (this.id)} var a = {} a.id =' aaa'a.show = function () {m.show ()} ؛ a.show () ؛ // mmmmلذلك عند استدعاء A.Show () ، فإنه يعادل استدعاء طريقة M.Show () ، لذلك هذا. يشير إلى كائن M.
انظر إلى المثال التالي ، ما زلت لم أفهمه كثيرًا في البداية
var color = 'red' ؛ var app = {} ؛ app.color = "green" ؛ app.paint = function (node) {node.style.color = this.color ؛ ALERT (this.color) ؛} findNode (callback) {var btn = document.queryselector ('. btn') ؛ Callback (btn) ؛ // pass in ،} findNode (app.paint) ؛ تنبيه (this.color) ؛ // الأحمر بدلاً من الأخضرعندما تمر وظيفة ما ، فإنها تمرر الوسائط وفقًا للقيمة ، وليس المراجع
لذلك عند FindNode (app.paint) ؛ ينتقل ، إنه في الواقع
دالة (عقدة) {node.style.color = this.color ؛ تنبيه (this.color) ؛}، نظرًا لأن FindNode محدد عالميًا ، فإن هذا يشير إلى النافذة أو غير محددة ؛
حول تمرير المعلمات ، تمرير القيم السابقة
عرض الوظيفة (أ) {تنبيه (أ)}من السهل الفهم عندما تكون المعلمات أنواع البيانات الأساسية
var b = 10 ؛ show (b) // ALERT (10) ؛
أما بالنسبة للكائن
var c = {} ؛ c.prop = true ؛ var showprop = function (obj) {obj.prop = false} showprop (c) ؛ //c.prop=falseيعتقد بعض الناس أن المثال أعلاه هو تمرير المعلمات وفقًا للمرجع
في الواقع ، ما سبق لا يزال يمر المعلمات وفقا للقيمة. عندما يمر showprop (C) C في الوظيفة ، فإن C تعادل في الواقع مرجعًا. الوظيفة لديها obj.prop = false ، وهو ما يعادل تغيير الكائن المشار إليه إلى {prop: false}
انظر إلى المثال التالي
var c = {} ؛ c.prop = true ؛ var showprop = function (obj) {obj = new Object () ؛ obj.prop = عودة خاطئة obj ؛} showprop (c) ؛ Alert (c.prop) ؛ //حقيقيهنا ، تم تعديل OBJ الواردة. إذا قمت بتمرير المعلمات وفقًا للوظيفة بالرجوع إليها ، فستكون التعديلات الموجودة داخل الوظيفة بالتأكيد في الخارج.
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.