‎‎فراخواني تابع جاوااسكريپتJavaScript Function Invocation -‎

Previous >    <Next  

‎‎كد داخل تابع جاوااسكريپت زماني اجرا ميشود كه، چيزي آنرا فراخواني كند.

‎‎فراخواني يك تابع جاوااسكريپتInvoking a JavaScript Function -‎

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

‎معمولا بجاي فراخواني تابع‎(invoke a function)‎ صدا زدن تابع ‎(call a function)‎‎استفاده ميشود .در زبانهاي برنامه نويسي صدا زدن تابع بيشتر ‎استفاده ميشود.

‎‎اصلاح صدا زدن تابع‎(call function)‎ يعني شروع تابع ويا باجرا درآمدن آنست .

‎درارائه مطالب جاوااسكريپت استفاده فراخوان‎(invoke)‎ استفاده ميشود، چون در ‎جاوااسكريپت ،تابع بدون صدازدن هم ميتواند اجرا شود .فراخواني بدين معني كه تابع در يك ‎عبارتي ظاهر شود ويا يك فراخوان داشته باشد.

‎‎خودفراخواني تابع مانند يك تابعInvoking a Function as a Function -‎

‎‎مثال ـ تابع زير بدون فراخوان اجرا ميشود.

function myFunction(a, b) {
  return a * b;
}
myFunction(10, 2);  

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

‎‎تابع فوق به هيچ شئي تعلق ندارد .اما درجاوااسكريپت هميشه يك شئ جهاني پيش فرض وجود دارد.

‎‎درHTML شئ جهاني پيش فرض خود صفحه HTML است .بنابراين تابع فوق به صفحه HTML متعلق است .

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

‎نكته ـ اين يك روش رايج براي فراخواني يك تابع جاوااسكريپت است، اما روش خيلي خوبي نيست. ‎متغيرهاي سراسري، متدها يا توابع به راحتي ميتوانندتضاد نام واشكالات در شئ سراسري ايجاد كنند

‎مثال ـ دراين مثال‎myfunction()‎‎ و‎window.myfunction( )‎ دو تابع مشابه ‎هستند.

function myFunction(a, b) {
  return a * b;
}
window.myFunction(10, 2);    // Will also return 20

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

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

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

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

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

‎در موردthis در بحش JavaScript this ‎اطلاعات كاملتري را مطالعه فرمائيد.

‎‎شئ سراسريThe Global Object -‎

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

‎‎مثال ـ در مثال زيرمقدار‎this‎ همان‎[object Window]‎ است.

let x = myFunction();            // x will be the window object

function myFunction() {
  return this;
}

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

‎فراخواني يك تابع به عنوان تابعي سراسري ، باعث ميشود كه مقدار‎this‎ برابر شئ ‎سراسري باشد، يا بعبارتي به شئ سراسري اشاره ميكند.

‎استفاده از شئ پنجره‎(Window object)‎ به عنوان يك متغير ممكن است برنامه شمارا ‎خراب كند.

‎‎فراخواني تابع مشابه متدInvoking a Function as a Method -‎

‎‎در جاوااسكريپت ميتوان تابع را بعنوان متد شئي تعريف نمود.

‎‎مثال ـ دراين مثال شئmyObject با دو ويژگيfirstName, lastNane و متدfullName ايجاد مي شود .

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

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

‎متدfullName يك تابع است، كه اين تابع متعلق به شئmyObject است .يعني شئ فوق مالك تابع fullName‎است .

‎در اين متد‎(fullName)‎ كي ورد‎this‎ به مالك متد يعني شئ myObject ‎اشاره دارد.

‎مثال را امتحان كنيد ، با تغيير در متد بنحوي كه مقدار‎this‎ را برگشت ميدهد. ‎مطابق زير:

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

// This will return [object Object] (the owner object)
myObject.fullName();

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

‎‎فراخواني يك تابع بعنوان متد شئ ، باعث ميشود كه مقدار‎this‎ خود شئ باشد.

‎‎فراخواني تابع با يك تابع سازندهInvoking a Function with a Function Constructor -‎

‎اگر قبل از فراخواني تابعي كلمه‎new‎ قرار داشته باشد، آن تابع سازنده است.اين به ‎نظر ميرسد كه تابعي ايجاد ميكنيد، اما چون توابع جاوااسگريپت شئ هستند، يك شئ جديد ايجاد ‎ميكنيد.

‎‎مثال ـ ايجاد شئ با تابع سازنده

// This is a function constructor:
function myFunction(arg1, arg2) {
  this.firstName = arg1;
  this.lastName  = arg2;
}

// This creates a new object
const myObj = new myFunction("John", "Doe");

// This will return "John"
myObj.firstName;

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

‎در فراحواني يك تابع سازنده شئ جديدي ايجاد ميشود .شئ جديد ويژگي ها ومتدهايش را از تابع ‎سازنده بارث ميبرد.

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


Previous >    <Next