هذه الترجمة لم تكتمل. رجاءً ساعد بترجمة هذه المقالة من الإنجليزية.

ميثود الـ ()call  تستدعي الفانكشان بواسطة وضع this في الارجمينت الاولى بشكل فردي .

تذكير :  قد يكون هناك وجه تشابه في تركيب الجملة apply() ولكن بشكل أساسي الـ()call تقبل لستة أرجمنت (argument list) ولكن  ()apply تقبل اراي واحدة للأرجمنت single array of arguments.

بناء الجملة

function.call(thisArg, arg1, arg2, ...)

Parameters

thisArg
Optional. The value of this provided for the call to a function. Note that this may not be the actual value seen by the method: if the method is a function in non-strict mode , null and undefined will be replaced with the global object and primitive values will be converted to objects.
arg1, arg2, ...
Optional. Arguments for the function.

Return value

The result of calling the function with the specified this value and arguments.

وصف

A different this object can be assigned when calling an existing function.

this تشير إلى الكائن المستدعى الحالي . مع الـ call انت تستطيع كتابة الميثود مرة واحدة ومن ثم تقوم بتوريثة في اوبجكت آخر بدون ماتكتب الميثود لمرة ثانية.

أمثلة

Using call to chain constructors for an object

تستطيع إستخدام callلـchain constructors لأجل الاوبجكت وذلك على غرار الجافا . في المثال التالي ، الكونستركتور لأوبجكت الـ Product وبه إتنين برامتار name و price . وأعلنا Product بداخل كل من الفانكشان Food و Toy  وباصينا في البرامتار (الخاصة بالفود والتوي) this و nameو price. والـProduct قمنا بتهيئة خصائصها ( النيم او البرايس ) ثم خصصنا في كل فانكشان إسم الفانكشان التي نتعامل من خلالها والتي تم وضع فيها ذلك الكود

  Product.call(this, name, price);

  في الـcategory

function Product(name, price) {
  this.name = name;
  this.price = price;
}

function Food(name, price) {
  Product.call(this, name, price);
  this.category = 'food';
}

function Toy(name, price) {
  Product.call(this, name, price);
  this.category = 'toy';
}

var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);

إستخدام الـcall في إستدعاء الانينموس فانكشان ( الفانكشان المجهولة )

في ذلك المثال أنشأنا انينموس فانكشان و إستخدمنا call  لإستدعاء كل كائن في الارراي . الغرض الرئيسي من الانينموس فانكشان هنا هو إضافة فانكشان print تطبع كل اوبجكت عندما يحين دورة في الاندكس الخاص بالاوبجكت في الارري . وباصينا الـthis القيمة ليست ضرورية بشكل صارم ، ولكن تتم لغرض توضيحي.

var animals = [
  { species: 'Lion', name: 'King' },
  { species: 'Whale', name: 'Fail' }
];

for (var i = 0; i < animals.length; i++) {
  (function(i) {
    this.print = function() {
      console.log('#' + i + ' ' + this.species
                  + ': ' + this.name);
    }
    this.print();
  }).call(animals[i], i);
}

Using call to invoke a function and specifying the context for 'this'

In the example below, when we call greet the value of this will be bound to object obj.

function greet() {
  var reply = [this.animal, 'typically sleep between', this.sleepDuration].join(' ');
  console.log(reply);
}

var obj = {
  animal: 'cats', sleepDuration: '12 and 16 hours'
};

greet.call(obj);  // cats typically sleep between 12 and 16 hours

إستخدام الـcallبدون تحديد البرامتار الاول

في المثال أدناه ،قمنا بإعلان فانكشان الـ display بدون مانباصي في البرامتار الاول . إذا لم يتم مباصاة قيمة this في البرامتار الاول فإنها مقيدة في الاوبجكت العام كما هو موضح .

var sData = 'Wisen';
            
function display(){
  console.log('sData value is %s ', this.sData);
}

display.call();  // sData value is Wisen 

مواصفات

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) Standard Initial definition. Implemented in JavaScript 1.3.
ECMAScript 5.1 (ECMA-262)
The definition of 'Function.prototype.call' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Function.prototype.call' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'Function.prototype.call' in that specification.
Draft  

دعم المتصفحات

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Basic supportChrome Full support YesEdge Full support YesFirefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

أنظر أيضا

Document Tags and Contributors

المساهمون في هذه الصفحة: MohammedAlaa88
آخر مَن حدّثها: MohammedAlaa88,