‎‎كي وردthis جاوااسكريپتThe JavaScript this Keyword -‎

Previous >    <Next  

‎‎مثال ـ كي وردthis

const person = {
  firstName: "John",
  lastName : "Doe",
  id       : 5566,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

--(go to editor for change code and run)

‎‎كي وردthis جيست

‎در جاوااسكريت كي ورد‎this‎ بيك شئ اشاره دارد .كدام شئ ، بستگي به نحوي فراخواني ‎يا استفاده دارد.

‎‎كي ورد‎this‎ باشياء مختلف وابسته به استفاده ، اشاره ميكند .مطابق زير :

‎‎توجه ـ‎this‎ متغير نيست، آن يك كلمه رزرو شده است .نميتوان مقدارآن را تغييرداد .

‎‎استفادهthis در متد

‎هنگاميكه آن در متدي استفاده ميشود، آن اشاره به شئ دارد .در مثال بالا‎this‎ ‎اشاره به شئperson دارد . چون متدfullName مربوط به شئ person است .

‎‎مثال ـthis در متد

fullName : function() {
  return this.firstName + " " + this.lastName;
}

--(go to editor for change code and run)

‎this‎تنها

‎هنگاميكه كي ورد‎this‎ به تنهائي استفاده ميشود، آن به شئ سراسري اشاره دارد . ‎چون آن در ميدان سراسري اجرا ميگردد.

‎‎در يك مرورگر ويندو شئ سراسري‎[object Window]‎ است .

‎‎مثال ـthis به تنهائي

let x = this;

--(go to editor for change code and run)

‎در حالت سختگيرانه‎(strict mode)‎ هنگامي كه this به تنهائي استفاده مي شود، بيك ‎شئ سراسري اشاره دارد.

‎‎مثال ـ كي وردthis به تنهائي در مد سختگيرانه

"use strict";
let x = this;

--(go to editor for change code and run)

‎this‎در يك تابع this in a Function(Default) -‎

‎‎در يك تابع ، شئ سراسري بصورت پيش فرض مورد اشاره‎this‎ است .

‎‎در يك مرورگرويندو شئ سراسري‎[object window]‎ مورد اشاره است .

‎‎مثال ـthis در تابع

function myFunction() {
  return this;
}

--(go to editor for change code and run)

‎this‎درتابع ومدسختگيرانهthis in a Function (Strict) -‎

‎جاوااسكريپت سختگيرانه اجازه اتصال پيش فرض را براي‎this‎ نميدهد .نتيجه دراين ‎شرايط، براي آن‎undefined‎ است.

‎‎مثال ـthis در تابع با حالت سختگيرانه

"use strict";
function myFunction() {
  return this;
}

--(go to editor for change code and run)

‎this‎در رويدادهاthis in Event Handlers -‎

‎‎در كنتركننده هاي رويداديHTML كي ورد‎this‎به عنصر دريافتي رويداد اشاره دارد .

‎‎مثال ـthis در رويداد

<button onclick="this.style.display='none'">
  Click to Remove Me!
 

--(go to editor for change code and run)

‎‎اتصال به متد شئObject Method Binding -‎

‎‎مثال ـ در اين مثالthis به متد person وصل است

const person = {
  firstName  : "John",
  lastName   : "Doe",
  id         : 5566,
  myFunction : function() {
    return this;
  }
}; 

--(go to editor for change code and run)

‎‎مثال ـ نام كامل نمايش داده ميشودthis .به person اشاره دارد .

const person = {
  firstName: "John",
  lastName : "Doe",
  id       : 5566,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

--(go to editor for change code and run)

‎‎در مثال فوقthis.firstNameويژگيfirstNameشئ person است يعني person.firstName

‎‎اتصال به توابع صريحExplicit Function Binding -‎

‎‎متدهاي‎call()‎ , apply( ) ‎از پيش تعريف شده در جاوااسكريپت ميباشند .

‎‎آن دو ميتوانند براي فراخواني يك متد شئ با شئ ديگربه عنوان آرگومان استفاده شوند.

‎در مثال زير متدperson1.fullName با شئ person2 بعنوان آرگومان فراخوان ميشود .كي ورد ‎در اين متد بهperson2 اشاره ميكند، هرچند كه fullName متد person1 است .

‎‎مثال ـ استفاده از متد‎call( )

const person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}

const person2 = {
  firstName:"John",
  lastName: "Doe",
}

// Return "John Doe":
person1.fullName.call(person2);

--(go to editor for change code and run)

‎‎قرض گرفتن تابعFunction Borrowing -‎

‎‎با متدbind( )‎‎، ‎يك شئ ميتواند متدي را از شئ ديگر قرض بگيرد .

‎مثال ـ در اين مثال دو شئnumber و person ايجاد ميشود .در آن شئ number متد fullName را از ‎شئperson قرض ميگيرد .

const person = {
  firstName:"John",
  lastName: "Doe",
  fullName: function () {
    return this.firstName + " " + this.lastName;
  }
}

const member = {
  firstName:"Hege",
  lastName: "Nilsen",
}

let fullName = person.fullName.bind(member);

--(go to editor for change code and run)

‎‎اولويتthis

‎‎در جدول زير اولويتthis به ترتيب مشخص شده است .

‎‎اولويتPrecedence -‎ ‎‎شئobject -‎
‎‎1‎ ‎‎bind( )‎‎
‎‎2‎ ‎‎apply( ) and call( )‎‎
‎‎3‎ ‎object method‎
‎‎4‎ ‎Global Scope‎

‎اين جدول بدين معني است كه اگر جاوااسكريپت به‎this‎ برخورد نمود، اول بررسي ‎ميشود كه مربوط به‎bind( )‎ است .در صورت درست بودن اشاره مرتبط با آن برايthis ‎منظور ميشود .در غير اينصورت رديفهاي بعدي.


Previous >    <Next