From 296bb7859bcc5436d18653e168054c6e39030cd2 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Fri, 12 Feb 2021 17:36:30 +0100 Subject: remove "unfixable" documents --- files/ar/_wikihistory.json | 19 - .../learn/html/multimedia_and_embedding/index.html | 79 ----- .../javascript/reference/operators/new/index.html | 178 ---------- .../javascript/reference/operators/this/index.html | 381 --------------------- 4 files changed, 657 deletions(-) delete mode 100644 files/ar/learn/html/multimedia_and_embedding/index.html delete mode 100644 files/ar/web/javascript/reference/operators/new/index.html delete mode 100644 files/ar/web/javascript/reference/operators/this/index.html (limited to 'files/ar') diff --git a/files/ar/_wikihistory.json b/files/ar/_wikihistory.json index 6e2ca1f741..3eea4b7676 100644 --- a/files/ar/_wikihistory.json +++ b/files/ar/_wikihistory.json @@ -448,13 +448,6 @@ "ahmadnourallah" ] }, - "Learn/HTML/Multimedia_and_embedding": { - "modified": "2020-07-16T22:24:23.909Z", - "contributors": [ - "MOTZ79567", - "ezrinjaz" - ] - }, "Learn/JavaScript": { "modified": "2020-07-16T22:29:36.627Z", "contributors": [ @@ -1391,18 +1384,6 @@ "suqbit" ] }, - "Web/JavaScript/Reference/Operators/new": { - "modified": "2020-10-15T22:33:30.546Z", - "contributors": [ - "noqp312" - ] - }, - "Web/JavaScript/Reference/Operators/this": { - "modified": "2020-10-15T22:29:18.195Z", - "contributors": [ - "h6t9m205" - ] - }, "Web/JavaScript/Reference/Statements": { "modified": "2020-03-12T19:44:08.522Z", "contributors": [ diff --git a/files/ar/learn/html/multimedia_and_embedding/index.html b/files/ar/learn/html/multimedia_and_embedding/index.html deleted file mode 100644 index d66696d111..0000000000 --- a/files/ar/learn/html/multimedia_and_embedding/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: الوسائط المتعددة والتضمين -slug: Learn/HTML/Multimedia_and_embedding -tags: - - Assessment - - Audio - - Beginner - - CodingScripting - - Embedding - - Flash - - Guide - - HTML - - Images - - Landing - - Learn - - Multimedia - - NeedsTranslation - - SVG - - TopicStub - - Video - - Web - - iframes - - imagemaps - - img - - responsive -translation_of: Learn/HTML/Multimedia_and_embedding ---- -

{{LearnSidebar}}

- -

لقد نظرنا في الكثير من النصوص حتى الآن في هذه الدورة ، ولكن الويب سيكون مملاً حقًا فقط باستخدام النص. دعونا نبدأ في النظر في كيفية جعل الويب ينبض بالحياة بمحتوى أكثر إثارة للاهتمام! تستكشف هذه الوحدة كيفية استخدام HTML لتضمين الوسائط المتعددة في صفحات الويب الخاصة بك ، بما في ذلك الطرق المختلفة التي يمكن تضمين الصور بها ، وكيفية تضمين الفيديو والصوت وحتى صفحات الويب بالكامل.

- -

المتطلبات الأساسية

- -

قبل بدء هذه الوحدة ، يجب أن يكون لديك معرفة معقولة بأساسيات HTML ، كما هو موضح سابقًا في مقدمة عن HTML . إذا لم تعمل من خلال هذه الوحدة (أو شيء مماثل) ، فقم بالعمل عليها أولاً ، ثم ارجع!

- -
-

Note: If you are working on a computer/tablet/other device where you don't have the ability to create your own files, you could try out (most of) the code examples in an online coding program such as JSBin or Thimble.

-
- -

ادله

- -

تحتوي هذه الوحدة على المقالات التالية التي ستأخذك من خلال جميع أساسيات تضمين الوسائط المتعددة على صفحات الويب.

- -
-
Images in HTML
-
-

هناك أنواع أخرى من الوسائط المتعددة للنظر، ولكن من المنطقي أن تبدأ مع المتواضع {{htmlelement ("img"}} عنصر يستخدم لتضمين صورة بسيطة في صفحة ويب. في هذه المقالة سننظر في كيفية استخدامه بمزيد من العمق ، بما في ذلك الأساسيات ، والتعليق عليه مع التسميات التوضيحية باستخدام {{htmlelement ("figure"}}، وكيفية ارتباطه بصور خلفية CSS.

-
-
Video and audio content
-
-

بعد ذلك، سننظر في كيفية استخدام عناصر {{(HTML5 {{htmlelement ("video"}}} و{{(htmlelement ("audio"}} لتضمين الفيديو والصوت على صفحاتنا، بما في ذلك الأساسيات، وتوفير الوصول إلى تنسيقات ملفات مختلفة إلى متصفحات مختلفة، وإضافة التسميات التوضيحية والترجمة، وكيفية إضافة نسخ احتياطية للمتصفحات القديمة.

-
-
From <object> to <iframe> — other embedding technologies
-
عند هذه النقطة نود أن تأخذ إلى حد ما من خطوة جانبية، والنظر في اثنين من العناصر التي تسمح لك لتضمين مجموعة واسعة من أنواع المحتوى في صفحات الويب الخاصة بك: {{htmlelement ("iframe"}}، {{htmlelement ("embed"}} و {{htmlelement ("object"}}. <iframe> هي لتضمين صفحات ويب أخرى ، والاثنان الآخران يسمحان لك بتضمين ملفات PDF و SVG وحتى Flash - وهي تقنية في طريقها للخروج ، ولكن قد لا تزال تراها بشكل شبه منتظم.
-
Adding vector graphics to the web
-
يمكن أن تكون الرسومات المتجهة مفيدة للغاية في بعض الحالات. على عكس التنسيقات العادية مثل PNG /JPG ، فإنها لا تشوه / أو  تتبكسل عند التكبير - يمكن أن تظل سلسة عند تحجيمها. تعرّفك هذه المقالة على تنسيق {{glossary ("SVG"}} في صفحات الويب.
-
Responsive images
-
مع هذا العدد الكبير من أنواع الأجهزة المختلفة القادرة الآن على تصفح الويب - من الهواتف المحمولة إلى أجهزة الكمبيوتر المكتبية - فإن المفهوم الأساسي للإتقان في عالم الويب الحديث هو التصميم المتجاوب. يشير هذا إلى إنشاء صفحات ويب يمكنها تغيير ميزاتها تلقائيًا لتناسب أحجام الشاشة المختلفة والدقة وما إلى ذلك. سيتم النظر في هذا بمزيد من التفصيل في وحدة CSS في وقت لاحق ، ولكن في الوقت الحالي ، سننظر في الأدوات التي يتوفر HTML لإنشاء صور سريعة الاستجابة ، بما في ذلك عنصر {{htmlelement ("picture"}}} .
-
- -

Assessments

- -

The following assessments will test your understanding of the HTML basics covered in the guides above:

- -
-
Mozilla splash page
-
In this assessment, we'll test your knowledge of some of the techniques discussed in this module's articles, getting you to add some images and video to a funky splash page all about Mozilla!
-
- -

See also

- -
-
Add a hitmap on top of an image
-
Image maps provide a mechanism to make different parts of an image link to different places. (Think of a map linking through to further information about each different country you click on.) This technique can sometimes be useful.
-
Web literacy basics 2
-
-

An excellent Mozilla foundation course that explores and tests some of the skills talked about in this Multimedia and embedding module. Dive deeper into the basics of composing webpages, designing for accessibility, sharing resources, using online media, and working open (meaning that your content is freely available and shareable by others).

-
-
diff --git a/files/ar/web/javascript/reference/operators/new/index.html b/files/ar/web/javascript/reference/operators/new/index.html deleted file mode 100644 index 3b39e0cf4e..0000000000 --- a/files/ar/web/javascript/reference/operators/new/index.html +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: new operator -slug: Web/JavaScript/Reference/Operators/new -tags: - - HTTP - - OpenPractices - - البروتوكولات - - بحث - - لغة البرمجة -translation_of: Web/JavaScript/Reference/Operators/new ---- -
9 9090 jsSidebar ("عوامل التشغيل")}}
- -

في newالمشغل يتيح للمطورين إنشاء مثيل من نوع الكائن المعرفة من قبل المستخدم أو واحد من أنواع الكائنات المضمنة التي لديه وظيفة المنشئ.

- -
{{EmbedInteractiveExample ("pages / js / expressions-newoperator.html")}}
- -

بناء الجملة

- -
new constructor[([arguments])]
- -

المعلمات

- -
-
constructor
-
فئة أو وظيفة تحدد نوع مثيل الكائن.
-
- -
-
arguments
-
قائمة القيم التي constructorسيتم الاتصال بها.
-
- -

وصف

- -

تقوم newالكلمة الرئيسية بالأشياء التالية:

- -
    -
  1. ينشئ كائن JavaScript عاديًا فارغًا ؛
  2. -
  3. روابط (تحدد منشئ) هذا الكائن إلى كائن آخر ؛
  4. -
  5. يمر كائن تم إنشاؤه حديثا من الخطوة 1 كما في thisالسياق؛
  6. -
  7. يعود thisإذا لم الدالة بإرجاع كائن.
  8. -
- -

يتطلب إنشاء كائن معرف من قبل المستخدم خطوتين:

- -
    -
  1. حدد نوع الكائن عن طريق كتابة دالة.
  2. -
  3. إنشاء مثيل للكائن باستخدام new.
  4. -
- -

لتحديد نوع كائن ، قم بإنشاء وظيفة لنوع الكائن تحدد اسمه وخصائصه. يمكن أن يكون للكائن خاصية تكون في حد ذاتها كائنًا آخر. انظر الأمثلة أدناه.

- -

عند تنفيذ الكود ، تحدث الأشياء التالية:new Foo(...)

- -
    -
  1. يتم إنشاء كائن جديد ، وراثة من Foo.prototype.
  2. -
  3. Fooيتم استدعاء دالة المُنشئ بالوسيطات المحددة ، وتكون thisمرتبطة بالكائن الذي تم إنشاؤه حديثًا. يكافئ ، على سبيل المثال ، إذا لم يتم تحديد قائمة وسيطة ، يتم استدعاؤه بدون وسيطات.new Foonew Foo()Foo
  4. -
  5. يصبح الكائن (ليس فارغًا ، أو خطأ ، أو 3.1415 أو أنواعًا أولية أخرى) التي تُرجعها دالة المُنشئ نتيجة newالتعبير بالكامل . إذا لم تُرجع دالة المُنشئ كائنًا بشكل صريح ، فسيتم استخدام الكائن الذي تم إنشاؤه في الخطوة 1 بدلاً من ذلك. (عادةً لا تُرجع المنشئات قيمة ، لكن يمكنهم اختيار القيام بذلك إذا كانوا يريدون تجاوز عملية إنشاء الكائن العادية.)
  6. -
- -

يمكنك دائمًا إضافة خاصية إلى كائن محدد مسبقًا. على سبيل المثال ، car1.color = "black"تضيف العبارة خاصية colorإلى car1، وتخصص لها قيمة " black". ومع ذلك ، هذا لا يؤثر على أي كائنات أخرى. لإضافة الخاصية الجديدة إلى جميع الكائنات من نفس النوع ، يجب إضافة الخاصية إلى تعريف Carنوع الكائن.

- -

يمكنك إضافة خاصية مشتركة إلى نوع كائن محدد مسبقًا باستخدام Function.prototypeالخاصية. يحدد هذا الخاصية التي يتم مشاركتها بواسطة جميع الكائنات التي تم إنشاؤها باستخدام هذه الوظيفة ، بدلاً من مثيل واحد فقط من نوع الكائن. تضيف التعليمة البرمجية التالية خاصية لون مع قيمة "original color"لكل كائنات النوع Car، ثم تكتب فوق تلك القيمة بالسلسلة " black" فقط في كائن المثيل car1. لمزيد من المعلومات ، انظر النموذج الأولي .

- -
function Car() {}
-car1 = new Car();
-car2 = new Car();
-
-console.log(car1.color);    // undefined
-
-Car.prototype.color = 'original color';
-console.log(car1.color);    // 'original color'
-
-car1.color = 'black';
-console.log(car1.color);    // 'black'
-
-console.log(Object.getPrototypeOf(car1).color); // 'original color'
-console.log(Object.getPrototypeOf(car2).color); // 'original color'
-console.log(car1.color);   // 'black'
-console.log(car2.color);   // 'original color'
-
- -
-

إذا لم تكتب newعامل التشغيل ، فسيتم استدعاء دالة الباني مثل أي دالة عادية ، دون إنشاء كائن. في هذه الحالة ، قيمة thisمختلفة أيضًا.

-
- -

أمثلة

- -

نوع الكائن ومثيل الكائن

- -

لنفترض أنك تريد إنشاء نوع كائن للسيارات. تريد أن يتم استدعاء هذا النوع من الكائنات Car، وتريد أن يكون لها خصائص لـ make و model و year. للقيام بذلك ، يمكنك كتابة الوظيفة التالية:

- -
function Car(make, model, year) {
-  this.make = make;
-  this.model = model;
-  this.year = year;
-}
-
- -

الآن يمكنك إنشاء كائن يسمى على myCarالنحو التالي:

- -
var myCar = new Car('Eagle', 'Talon TSi', 1993);
-
- -

تقوم هذه العبارة بإنشاء myCarوتعيين القيم المحددة لخصائصها. ثم قيمة myCar.makeالسلسلة "النسر" ، myCar.yearهو العدد الصحيح 1993 ، وهلم جرا.

- -

يمكنك إنشاء أي عدد من carالكائنات عن طريق المكالمات إلى new. فمثلا:

- -
var kensCar = new Car('Nissan', '300ZX', 1992);
-
- -

خاصية الكائن التي هي نفسها كائن آخر

- -

لنفترض أنك قمت بتعريف كائن يسمى على PersSexonالنحو التالي:

- -
function Person(name, age, sex) {XxxXxx
-  this.name = name;
-  this.age = age;
-  this.sex = sex;
-}
-
- -

ثم قم بإنشاء كائنين جديدين على Personالنحو التالي:

- -
var rand = new Person('Rand McNally', 33, 'M');
-var ken = new Person('Ken Jones', 39, 'M');
-
- -

ثم يمكنك إعادة كتابة تعريف Carلتضمين ownerخاصية تأخذ Personكائنًا ، على النحو التالي:

- -
function Car(make, model, year, owner) {
-  this.make = make;
-  this.model = model;
-  this.year = year;
-  this.owner = owner;
-}
-
- -

لإنشاء كائنات جديدة ، يمكنك بعد ذلك استخدام ما يلي:

- -
var car1 = new Car('Eagle', 'Talon TSi', 1993, rand);
-var car2 = new Car('Nissan', '300ZX', 1992, ken);
-
- -

بدلا من تمرير سلسلة حرفية أو عدد صحيح القيمة عند إنشاء كائنات جديدة، والبيانات المذكورة أعلاه تمر الكائنات randو kenكمعلمات للمالكي. لمعرفة اسم مالك الموقع car2، يمكنك الوصول إلى الخاصية التالية:

- -
car2.owner.name
-
- -

مواصفات

- - - - - - - - - - - - -
تخصيص
{{SpecName ('ESDraft'، '# sec-new-worker'، 'The new Operator')}}
- -

التوافق المتصفح

- - - -

{{Compat ("javascript.operators.new")}}

- -

أنظر أيضا

- - diff --git a/files/ar/web/javascript/reference/operators/this/index.html b/files/ar/web/javascript/reference/operators/this/index.html deleted file mode 100644 index 4e86b7e937..0000000000 --- a/files/ar/web/javascript/reference/operators/this/index.html +++ /dev/null @@ -1,381 +0,0 @@ ---- -title: this -slug: Web/JavaScript/Reference/Operators/this -translation_of: Web/JavaScript/Reference/Operators/this ---- -
{{jsSidebar ("عوامل التشغيل")}}
- -

A الدالة thisالكلمة تتصرف بشكل مختلف قليلا في جافا سكريبت بالمقارنة مع اللغات الأخرى. كما أن لديها بعض الاختلافات بين الوضع الصارم والوضع غير الصارم.

- -

في معظم الحالات ، thisيتم تحديد القيمة من خلال كيفية استدعاء دالة (ربط وقت التشغيل). لا يمكن تعيينه عن طريق التعيين أثناء التنفيذ ، وقد يكون مختلفًا في كل مرة يتم استدعاء الوظيفة. قدم ES5 طريقة {{jsxref ("Function.prototype.bind ()"، "bind ()")}} إلى {{jsxref ('Operators / this'، ") تعيين قيمة الوظيفة thisبغض النظر عن كيفية تسميتها" قدم كل من "The_bind_method" و 1)}} و ES2015 دالات الأسهم التي لا توفر ربطًا خاصًا بها this(فهي تحتفظ thisبقيمة السياق المعجم المرفق).

- -
{{EmbedInteractiveExample ("pages / js / expressions-this.html")}}
- - - -

بناء الجملة

- -
هذه
- -

القيمة

- -

خاصية سياق التنفيذ (عام ، أو وظيفة ، أو تقييم) التي ، في الوضع غير الصارم ، تكون دائمًا مرجعًا إلى كائن وفي الوضع الصارم يمكن أن تكون أي قيمة.

- -

السياق العالمي

- -

في سياق التنفيذ العام (خارج أي وظيفة) ، thisيشير إلى الكائن العام سواء في الوضع الصارم أم لا.

- -
// في متصفحات الويب ، يكون كائن النافذة أيضًا هو الكائن العام:
-console.log (هذه النافذة ===) ؛ // صحيح
-
-أ = 37 ؛
-console.log (window.a) ؛ // 37
-
-this.b = "MDN" ؛
-console.log (window.b) // "MDN"
-console.log (ب) // "MDN"
-
- -
-

ملاحظة: يمكنك دائمًا الحصول بسهولة على الكائن العام باستخدام خاصية {{jsxref ("globalThis")}} العمومية ، بغض النظر عن السياق الحالي الذي تعمل فيه التعليمات البرمجية الخاصة بك.

-
- -

سياق الوظيفة

- -

داخل الدالة ، thisتعتمد القيمة على كيفية استدعاء الوظيفة.

- -

مكالمة بسيطة

- -

نظرًا لأن الشفرة التالية ليست في وضع صارم ، ولأن القيمة thisلم يتم تعيينها بواسطة المكالمة ، thisفسيتم تعيينها افتراضيًا على الكائن العام ، وهو {{domxref ("Window"، "window")}} في المتصفح.

- -
الدالة f1 () {
-  أعد هذا ؛
-}}
-
-// في متصفح:
-f1 () === نافذة ؛ // صحيح
-
-// في العقدة:
-f1 () === عام ؛ // صحيح
- -

ومع ذلك ، في الوضع الصارم ، إذا thisلم يتم تعيين القيمة عند إدخال سياق التنفيذ ، فإنها تظل كما undefinedهو موضح في المثال التالي:

- -
الدالة f2 () {
-  "استخدام صارم" ؛ // انظر الوضع الصارم
-  أعد هذا ؛
-}}
-
-f2 () === غير معرّف ؛ // صحيح
-
- -
في المثال الثاني ، thisيجب أن يكون {{jsxref ("undefined")}} ، لأنه f2تم استدعاؤه مباشرةً وليس كطريقة أو خاصية لكائن (مثل window.f2()). لم يتم تنفيذ هذه الميزة في بعض المتصفحات عندما بدأوا في دعم الوضع الصارم لأول مرة . ونتيجة لذلك ، أعادوا windowالكائن بشكل غير صحيح .
- -

لتعيين قيمة thisإلى قيمة معينة عند استدعاء دالة ، استخدم {{jsxref ("Function.prototype.call ()" أو "call ()")}} أو {{jsxref ("Function.prototype.apply ( ) "،" Apply () ")}} كما في الأمثلة التالية.

- -

مثال 1

- -
// يمكن تمرير كائن باعتباره الوسيطة الأولى للاتصال أو التطبيق وهذا سوف يرتبط به.
-var obj = {a: 'Custom'} ؛
-
-// تم تعيين هذه الخاصية على الكائن العام
-var a = 'Global'؛
-
-الدالة whatsThis () {
-  أعد هذا. // تعتمد قيمة هذا على كيفية استدعاء الوظيفة
-}}
-
-ما هذا()؛ // "عالمي"
-whatsThis.call (obj) ؛ // 'مخصص'
-whatsThis.apply (obj) ؛ // 'مخصص'
-
- -

مثال 2

- -
إضافة دالة (ج ، د) {
-  إرجاع هذا. a + this.b + c + d ؛
-}}
-
-var o = {a: 1، b: 3} ؛
-
-// المعلمة الأولى هي الكائن المطلوب استخدامه كـ
-// 'this' ، يتم تمرير المعلمات اللاحقة كـ 
-// الوسيطات في استدعاء الوظيفة
-add.call (س ، 5 ، 7) ؛ // 16
-
-// المعلمة الأولى هي الكائن المطلوب استخدامه كـ
-// 'this' ، والثاني عبارة عن مصفوفة
-يتم استخدام // members كوسيطة في استدعاء دالة
-add.apply (س ، [10 ، 20]) ؛ // 34
-
- -

علما بأن في الوضع غير صارمة، مع callو apply، إذا كانت القيمة التي تم تمريرها كما thisليست كائن، سيتم إجراء محاولة لتحويله إلى كائن باستخدام الداخلية ToObjectالعملية. لذا ، إذا كانت القيمة التي تم تمريرها بدائية مثل 7أو 'foo'، سيتم تحويلها إلى كائن باستخدام المُنشئ ذي الصلة ، لذلك 7يتم تحويل الرقم البدائي إلى كائن كما لو كان بواسطة new Number(7)والسلسلة 'foo'إلى كائن كما لو كان new String('foo')، على سبيل المثال

- -
شريط الوظائف () {
-  console.log (Object.prototype.toString.call (this)) ؛
-}}
-
-bar.call (7) ؛ // [رقم الكائن]
-bar.call ('foo') ؛ // [سلسلة الكائن]
-
- -

على bindطريقة

- -

قدم ECMAScript 5 {{jsxref ("Function.prototype.bind ()")}}}. f.bind(someObject)يؤدي الاستدعاء إلى إنشاء وظيفة جديدة بنفس الجسم والنطاق f، ولكن thisفي حالة حدوثها في الوظيفة الأصلية ، في الوظيفة الجديدة ، يتم ربطها بشكل دائم بالحجة الأولى bind، بغض النظر عن كيفية استخدام الوظيفة.

- -
دالة f () {
-  أعد هذا.
-}}
-
-var g = f.bind ({a: 'azerty'}) ؛
-console.log (g ()) ؛ // azerty
-
-var h = g.bind ({a: 'yoo'}) ؛ // bind يعمل مرة واحدة فقط!
-console.log (h ()) ؛ // azerty
-
-var o = {a: 37، f: f، g: g، h: h} ؛
-console.log (oa، of ()، og ()، oh ())؛ // 37،37، azerty، azerty
-
- -

وظائف السهم

- -

في دوال السهم ، thisيحتفظ بقيمة السياق المعجم المتضمن this. في الكود العام ، سيتم تعيينه على الكائن العام:

- -
var globalObject = هذا ؛
-var foo = (() => this) ؛
-console.log (foo () === globalObject) ؛ // صحيح
- -
-

ملاحظة: إذا thisتم تمرير الوسيطة إلى call، bindأو applyعند استدعاء وظيفة السهم ، فسيتم تجاهلها. لا يزال بإمكانك إضافة وسيطات إلى المكالمة ، ولكن thisArgيجب ضبط الوسيطة الأولى ( ) على null.

-
- -
// Call كطريقة لكائن
-var obj = {func: foo} ؛
-console.log (obj.func () === globalObject) ؛ // صحيح
-
-// محاولة تعيين هذا باستخدام المكالمة
-console.log (foo.call (obj) === globalObject) ؛ // صحيح
-
-// جرت محاولة ضبط ذلك باستخدام الربط
-foo = foo.bind (obj) ؛
-console.log (foo () === globalObject) ؛ // صحيح
- -

مهما كانت، fooالصورة thisيتم تعيين إلى ما كانت عليه عندما تم إنشاؤه (في المثال أعلاه، الكائن العالمي). وينطبق الشيء نفسه على دالات الأسهم التي تم إنشاؤها داخل دوال أخرى: thisبقايا تلك السياق المعجمية المرفقة.

- -
// إنشاء كائن بشريط أسلوب يقوم بإرجاع دالة
-// يعيد هذا. يتم إنشاء الدالة التي تم إرجاعها كـ
-// دالة سهم ، لذا فهي مرتبطة بشكل دائم بـ
-// هذه الدالة المرفقة. يمكن تعيين قيمة الشريط
-// في المكالمة ، والتي تحدد بدورها قيمة 
-// عادت الدالة.
-var obj = {
-  شريط: الوظيفة () {
-    var x = (() => this) ؛
-    العودة س ؛
-  }}
-} ؛
-
-// Call bar كطريقة للهدف ، وضبط هذا الأمر على obj
-// تعيين مرجع للدالة التي تم إرجاعها إلى fn
-var fn = obj.bar () ،
-
-// Call fn دون تعيين هذا ، سيكون الوضع الافتراضي عادةً
-// إلى الكائن العام أو غير محدد في الوضع الصارم
-console.log (fn () === obj) ؛ // صحيح
-
-// لكن احذر إذا رجعت إلى طريقة الكائن بدون تسميتها
-var fn2 = obj.bar ،
-// استدعاء وظيفة السهم هذا من داخل طريقة الشريط ()
-// سيعود الآن النافذة ، لأنه يتبع هذا من fn2.
-console.log (fn2 () () == window) ؛ // صحيح
-
- -

في أعلاه ، تم تعيين الوظيفة (يطلق عليها الوظيفة المجهولة أ) obj.barلإرجاع وظيفة أخرى (يطلق عليها الوظيفة المجهولة ب) التي تم إنشاؤها كدالة سهم. ونتيجة لذلك، وظيفة B في thisتعيين دائم لل thisمن obj.bar(وظيفة A) عندما دعا. عندما يتم استدعاء الدالة التي تم إرجاعها (الوظيفة B) ، thisستكون دائمًا ما تم تعيينها عليه في البداية. في المثال رمز أعلاه، وظيفة باء thisمن المقرر أن وظيفة A و thisالذي هو obj، لذلك لا يزال المقرر أن objحتى عندما دعا بطريقة من شأنها أن تحدد عادة في thisل undefinedأو الكائن العالمي (أو أي طريقة أخرى كما في المثال السابق في عالمي سياق التنفيذ).

- -

كطريقة كائن

- -

عندما يتم استدعاء دالة كطريقة لكائن ما ، thisيتم تعيينها على الكائن الذي يتم استدعاء الطريقة.

- -

في المثال التالي ، عندما o.f()يتم استدعاء ، داخل الوظيفة thisمنضمة إلى oالكائن.

- -
var o = {
-  الدعامة: 37 ،
-  و: الوظيفة () {
-    أعد هذا. prop؛
-  }}
-} ؛
-
-console.log (من ()) ؛ // 37
-
- -

لاحظ أن هذا السلوك لا يتأثر على الإطلاق بكيفية أو مكان تعريف الوظيفة. في المثال السابق ، قمنا بتعريف الوظيفة المضمنة fكعضو أثناء تعريف o. ومع ذلك ، كان بإمكاننا تحديد الوظيفة بسهولة ثم إرفاقها بها لاحقًا o.f. يؤدي القيام بذلك إلى نفس السلوك:

- -
var o = {prop: 37} ؛
-
-وظيفة مستقلة () {
-  أعد هذا. prop؛
-}}
-
-of = مستقل ؛
-
-console.log (من ()) ؛ // 37
-
- -

يوضح هذا أنه من المهم فقط أن يتم استدعاء الوظيفة من fعضو o.

- -

وبالمثل ، thisلا يتأثر الربط إلا بمرجع العضو المباشر. في المثال التالي ، عندما نستدعي الوظيفة ، نسميها كطريقة gللكائن o.b. هذه المرة أثناء التنفيذ ، thisسيتم الرجوع إلى داخل الوظيفة o.b. حقيقة أن الكائن هو نفسه عضو oليس له أي عواقب ؛ المرجع الأكثر فورية هو كل ما يهم.

- -
ob = {g: Independent، prop: 42} ؛
-console.log (obg ()) ؛ // 42
-
- -

this في سلسلة النموذج الأولي للكائن

- -

ينطبق نفس المفهوم على الأساليب المحددة في مكان ما على سلسلة النموذج الأولي للكائن. إذا كانت الطريقة موجودة في سلسلة نموذجية للكائن ، thisفيشير إلى الكائن الذي تم استدعاء الطريقة ، كما لو كانت الطريقة موجودة على الكائن.

- -
var o = {f: function () {return this.a + this.b؛ }} ؛
-var p = Object.create (o) ؛
-السلطة الفلسطينية = 1 ؛
-pb = 4 ؛
-
-console.log (pf ()) ؛ // 5
-
- -

في هذا المثال ، الكائن الذي تم تعيينه للمتغير pليس له fخاصية خاصة به ، بل يرثه من النموذج الأولي الخاص به. ولكن لا يهم أن fيجد البحث في النهاية عضوًا يحمل هذا الاسم o؛ بدأ البحث كمرجع إلى p.f، لذا thisداخل الوظيفة تأخذ قيمة الكائن المشار إليه باسم p. هذا ، حيث fيطلق عليه أسلوبًا p، thisيشير إليه p. هذه ميزة مثيرة للاهتمام في وراثة النموذج الأولي لجافا سكريبت.

- -

this مع مُدرب أو مُدرب

- -

مرة أخرى ، نفس الفكرة صحيحة عندما يتم استدعاء دالة من getter أو setter. this ترتبط الوظيفة المستخدمة كجلب أو أداة ضبط بالكائن الذي يتم تعيين الخاصية أو الحصول عليها منه.

- -
الدالة () {
-  إرجاع this.a + this.b + this.c ؛
-}}
-
-var o = {
-  أ: 1 ،
-  ب: 2 ،
-  ج: 3 ،
-  الحصول على المتوسط ​​() {
-    العودة (this.a + this.b + this.c) / 3 ؛
-  }}
-} ؛
-
-Object.defineProperty (o، 'sum'، {
-    get: sum، enumerable: true، configurable: true})؛
-
-console.log (o. avage، o.sum) ؛ // 2 ، 6
-
- -

كمنشئ

- -

عند استخدام دالة كمنشئ (باستخدام الكلمة الرئيسية {{jsxref ("Operators / new"، "new")}}) ، thisفإنها مرتبطة بالعنصر الجديد الذي يتم إنشاؤه.

- -
-

على الرغم من أن الإعداد الافتراضي للمنشئ هو إرجاع الكائن المشار إليه this، فإنه يمكنه بدلاً من ذلك إرجاع كائن آخر (إذا لم تكن القيمة المرجعة كائنًا ، فسيتم thisإرجاع الكائن).

-
- -
/ *
- * يعمل المنشئ على النحو التالي:
- *
- * وظيفة MyConstructor () {
- * // كود الجسم للوظيفة الفعلية يظهر هنا.  
- * // إنشاء خصائص على | هذا | مثل
- * // مرغوب من خلال التنازل عنها. على سبيل المثال ،
- * this.fum = "nom" ؛
- * // إلى آخره...
- *
- * // إذا كانت الوظيفة تحتوي على بيان إرجاع ذلك
- * // يقوم بإرجاع كائن ، سيكون هذا الكائن هو
- * // نتيجة | جديد | التعبير. غير ذلك،
- * // نتيجة التعبير هي الكائن
- * // مرتبط حاليًا بـ | this |
- * // (أي الحالة الشائعة التي تُرى عادةً).
- *}
- * /
-
-الدالة C () {
-  this.a = 37 ؛
-}}
-
-var o = new C () ،
-Console.log (oa) ؛ // 37
-
-
-الدالة C2 () {
-  this.a = 37 ؛
-  العودة {أ: 38} ؛
-}}
-
-o = C2 () جديد ؛
-Console.log (oa) ؛ // 38
-
- -

في المثال الأخير ( C2) ، لأنه تم إرجاع كائن أثناء البناء ، thisيتم التخلص من الكائن الجديد الذي كان مرتبطًا به ببساطة. (هذا يجعل العبارة " this.a = 37;" رمزًا ميتًا بشكل أساسي . ليس ميتًا تمامًا لأنه يتم تنفيذه ، ولكن يمكن إزالته بدون أي تأثيرات خارجية.)

- -

كمعالج حدث DOM

- -

عند استخدام دالة كمعالج للأحداث ، thisيتم تعيينها على العنصر الذي يتم وضع المستمع عليه (بعض المتصفحات لا تتبع هذا الاصطلاح للمستمعين المضافين ديناميكيًا بأساليب أخرى غير {{domxref ("EventTarget / addEventListener"، "addEventListener" () ")}}).

- -
// عند الاتصال كمستمع ، يحول العنصر ذي الصلة إلى اللون الأزرق
-دالة bluify (e) {
-  // دائما صحيح او صادق
-  console.log (هذا === e.currentTarget) ؛
-  // true عندما يكون currentTarget والهدف هما نفس الكائن
-  console.log (هذا === e.target) ؛
-  this.style.backgroundColor = '# A5D9F3' ؛
-}}
-
-// احصل على قائمة بكل عنصر في المستند
-var Elements = document.getElementsByTagName ('*') ؛
-
-// أضف bluify كمستمع فوق حتى عندما
-تم النقر على عنصر // ، ويتحول إلى اللون الأزرق
-for (var i = 0؛ i <element.length؛ i ++) {
-  العناصر [i] .addEventListener ('click'، bluify، false) ؛
-}}
- -

في معالج حدث مضمن

- -

عندما يتم استدعاء الرمز من معالج مضمّن في الحدث ، thisيتم تعيينه على عنصر DOM الذي يتم وضع المستمع عليه:

- -
<button onclick = "alert (this.tagName.toLowerCase ())؛">
-  تظهر هذه
-</button>
-
- -

يظهر التنبيه أعلاه button. لاحظ أن الكود الخارجي فقط هو الذي تم thisضبطه بهذه الطريقة:

- -
<button onclick = "alert ((function () {return this؛}) ())؛">
-  أظهر هذا الداخلية
-</button>
-
- -

في هذه الحالة ، thisلم يتم تعيين الوظيفة الداخلية ، لذا فإنها تُرجع الكائن العام / النافذة (أي الكائن الافتراضي في الوضع غير الصارم حيث thisلا يتم تعيينه بواسطة المكالمة).

- -

مواصفات

- - - - - - - - - - - - -
تخصيص
{{SpecName ('ESDraft'، '# sec-this-keyword'، 'The this keyword')}}
- -

التوافق المتصفح

- - - -

{{Compat ("javascript.operators.this")}}

- -

أنظر أيضا

- - -- cgit v1.2.3-54-g00ecf