هذا
هذه كلمة رئيسية في جافا سكريبت. سوف تتغير قيمة هذا اعتمادًا على استخدام الوظيفة. ولكن هناك دائمًا مبدأ ، أي أن هذا يشير إلى الكائن الذي يدعو الوظيفة.
1. التعريف
1. هذا كائن خاص (أو هذا المرجع) داخل الوظيفة - يشير إلى كائن البيئة الذي يتم تنفيذ الوظيفة عليه.
2. هذا المرجع هو متغير للقراءة فقط يمكن استخدامه في أي وقت في رمز JavaScript. مرجع المرجع (النقاط إلى) هو كائن له خاصية يغير تلقائيًا كائن المرجع وفقًا لسياق الكود. قواعد الاستشهاد الخاصة بها على النحو التالي:
• في الكود الخارجي ، يشير هذا المرجع إلى كائن عالمي.
• ضمن وظيفة ، يختلف هذا المرجع وفقًا للطريقة التي تسمى الوظيفة. على النحو التالي
1) مكالمة المنشئ - تشير هذه المرجع إلى الكائن الذي تم إنشاؤه
2) استدعاء الطريقة - يشير هذا المرجع إلى كائن المتلقي
3) التطبيق أو الاتصال - يشير هذا المرجع إلى كائن محدد بمعلمات التطبيق أو المكالمة
4) طرق أخرى للاتصال - تشير هذه المرجع إلى الكائن العالمي
2. بناءً على المعلومات المذكورة أعلاه والمعنية ذات الصلة ، يتم تلخيص حالة استخدام هذا الكائن (المذكور) على النحو التالي:
JavaScript هي لغة ديناميكية ، وفقط عند تنفيذ هذه الكلمة الرئيسية ، يمكن تحديدها. لذلك يشير هذا دائمًا إلى المتصل ، أي إشارة إلى "كائن الاتصال". بعبارة ذلك ببساطة ، أي الكائن الذي ينتمي إليه الطريقة التي تسمى ، هذا يشير إلى هذا الكائن. اعتمادًا على طريقة استدعاء الوظيفة ، يمكن أن يشير هذا إلى كائن عالمي أو كائن الحالي أو أي كائن آخر.
1. استدعاء الوظائف العالمية ، سيشير هذا في الوظيفة العالمية إلى نافذة الكائن العالمي. (وضع استدعاء الوظيفة)
// Code List 1 <script type = "text/javaScript"> var message = "this in window" ؛ // يتم كتابة هذه الجملة خارج الوظيفة وداخل الوظيفة Func () {if (this == window) {Alert ("this == window") ؛ تنبيه (رسالة) ؛ this.methoda = function () {Alert ("أنا دالة") ؛}}}} func () ؛ // إذا لم يتم استدعاء طريقة FUNC ، فلن يتم استرداد السمات أو الأساليب المحددة فيه بواسطة methoda () ؛ </script>نتيجة Call of Func () هي هذه النافذة == ، هذا في النافذة
نتيجة الدعوة إلى Methoda () هي أنا وظيفة
2. استدعاء مُنشئ ، أي إنشاء كائن باستخدام جديد ، سيشير هذا إلى الكائن الذي تم إنشاؤه من خلال المنشئ. (وضع استدعاء مُنشئ)
كود قائمة 2
<script type = "text/javaScript"> func func () {if (this == window) {Alert ("this == window") ؛} else {Alert ("this! = window") ؛ // هذا يشير إلى الكائن obj </script>3. استدعاء طريقة الكائن ، هذا يشير إلى الكائن الحالي. أي وظيفة ، طالما يتم استخدام الوظيفة أو تعيينها كطريقة للكائن ، فإن هذا داخل الوظيفة هو مرجع للكائن نفسه. يمكن أيضًا فهم أن هذا مكتوب في كائن عادي ، وهذا يشير إلى الكائن نفسه. (وضع استدعاء الطريقة)
(تعريف الطريقة: تسمى دالة كخاصية كائن طريقة)
// Code List 3 <script type = "text/javaScript"> var obj = {x: 3 ، doIt: function () {if (this == window) {alert ("this == window") ؛} else {alert ("method exal exal exal: // هذا يشير إلى الكائن obj </script>4. استدعاء هذا من خلال تطبيق أو استدعاء طريقة ، وهذا يشير إلى الكائن الذي تم تمريره.
يمكن استخدام طريقة التطبيق أو الاتصال لاستدعاء طريقة بدلاً من كائن آخر. تقوم طريقة المكالمة بتغيير سياق الكائن لوظيفة من السياق الأولي إلى كائن جديد محدد بواسطة ThisoBJ. إذا لم يتم توفير معلمة thisoBJ ، فسيتم استخدام الكائن العالمي كـ thisoBJ. (تطبيق وضع الاتصال)
// list code 4 <script type = "text/javaScript"> var obj = {x: 3 ، doIt: function () {alert ("method exalize: // 3 ، هذا يشير إلى objobj.doit.apply (OBJ2) ؛ // 4 ، هذا يشير إلى OBJ2OBJ.Doit.Call (OBJ2) ؛ // 4 ، هذا يشير إلى OBJ2 </script>5. هذا في سلسلة النموذج الأولي - كائن النموذج الأولي وهذا في المُنشئ يشير إلى كائن المثيل الذي تم إنشاؤه حديثًا. استخدم طريقة تمديد النموذج الأولي للحصول على مثيل للكائن المصدر باستخدام هذا ، ولا يمكن الحصول على الحقول الخاصة من خلال سلسلة النموذج الأولي.
// list code 5 <script type = "text/javaScript"> func func () {this.fielda = "أنا حقل" ؛ var privatefielda = "أنا var" ؛} func.prototype = {extendMethod: function (str) {Alert (str + ": // حدث خطأ ، لا يمكن الحصول على الحقل الخاص من خلال سلسلة النموذج الأولي. }} ؛ var obj = new func () ؛ obj.extendMethod ("من النموذج الأولي") ؛ // في هذا الكائن الإشارة OBJ في سلسلة المُنشئ ونموذج النموذج الأولي في هذا الوقت ، OBJ </script>6. هذا في الإغلاق - الإغلاق: الوظيفة المكتوبة في الوظيفة ، وهذا يشير إلى نافذة الكائن العالمي.
6.1 الإغلاق في كائن
// Code List 6 <Script type = "text/javaScript"> var name = "The Window" ؛ var obj = {name: "My Object" ، getNameFunc: function () {return function () {return this.name ؛}}} ؛ ALERT (obj.getnamefunc () ()) ؛ // النافذة </script>في هذا الوقت ، يشير هذا في الإغلاق إلى نافذة الكائن العالمي ، ويمكن أن يحصل فقط على خصائص الكائن العالمي. إذن ، ما الذي يجب أن أفعله إذا كانت الخصائص الموجودة داخل الكائن (متغيرات الوظائف الخارجية) تريد الوصول إليها؟ ما عليك سوى حفظ هذا الكائن من الوظيفة الخارجية في متغير يمكن الوصول إليه عن طريق الإغلاق. انظر إلى الكود التالي:
// Code List 7 <script type = "text/javaScript"> var name = "the window" ؛ var obj = {name: "my Object" ، getNameFunc: function () {var that = this ؛ return function () {return that.name ؛}}} ؛ ALERT (obj.getnamefunc () () () () () ؛ // كائني </script>قم بتعيين هذا إلى الوظيفة الخارجية للمتغير ، يمكنك قراءة متغير الوظيفة الخارجية.
6.2 ما إذا كانت تشير مباشرة إلى الوظيفة أو إنشاء دالة ما ، فإن هذا في وظيفة الإغلاق ، فإنه يعيد النقاط إلى النافذة.
// Code List 8 <Script type = "text/javaScript"> function a () {Alert (this == window) ؛ var that = this ؛ var func = function () {alert (this == window) ؛ Alert (that) ؛} ؛ return func ؛} var b = a () ؛ b () ؛ // صواب ، صحيح ، [نافذة الكائن] var c = new a () ؛ c () ؛ // false ، true ، [كائن الكائن] </script>7. تستخدم الوظيفة طريقة BIND () لربط كائن ، وسيشير هذا إلى القيمة التي تم تمريرها إلى دالة BIND ().
// list code 9 <script type = "text/javaScript"> window.color = "red" ؛ var obj = {color: "blue"} ؛ function seallor () {Alert (this.color) ؛} var objsaycolor = saycolor.bind (obj) ؛ objsaycolor () ؛ // الأزرق </script>8. شريحة البرنامج النصي المضمنة في عنصر HTML ، وهذا يشير إلى العنصر نفسه
// Code List 10 <div onClick = "Test (this)" id = "div"> انقر فوق لي </div> <script type = "text/javaScript"> اختبار الوظيفة (OBJ) {ALERT (OBJ) ؛ // [Object htmldivelement]} </script>9. اكتب في علامة البرنامج النصي: يشير هذا إلى نافذة الكائن العالمي. هذا هو نفس المتغير العالمي الذي تسمى الوظيفة العالمية في النقطة الأولى.
ما سبق هو اقتباس من هذا في JavaScript الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!