From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../global_objects/function/call/index.html | 225 +++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 files/nl/web/javascript/reference/global_objects/function/call/index.html (limited to 'files/nl/web/javascript/reference/global_objects/function/call') diff --git a/files/nl/web/javascript/reference/global_objects/function/call/index.html b/files/nl/web/javascript/reference/global_objects/function/call/index.html new file mode 100644 index 0000000000..aee4b67e7f --- /dev/null +++ b/files/nl/web/javascript/reference/global_objects/function/call/index.html @@ -0,0 +1,225 @@ +--- +title: Function.prototype.call() +slug: Web/JavaScript/Reference/Global_Objects/Function/call +tags: + - Functie + - JavaScript + - Méthode +translation_of: Web/JavaScript/Reference/Global_Objects/Function/call +--- +
{{JSRef}}
+ +

De call() methode roept een functie aan met een gegeven this waarde en afzonderlijk gedefineerde argumenten.

+ +
+

Note: Hoewel de syntax van deze functie vrijwel gelijk is aan die van {{jsxref("Function.prototype.apply", "apply()")}}, zit er een essentieel verschil tussen deze twee. De call() methode accepteert een argumentenlijst, terwijl apply() een enkele array met argumenten accepteert.

+
+ +

Syntax

+ +
function.call(thisArg[, arg1[, arg2[, ...]]])
+ +

Parameters

+ +
+
thisArg
+
De waarde van this die aan de call voor function wordt meegegeven. Houd er rekening mee dat dit mogelijk niet de waarde is die de methode ziet: Als de methode gedefineerd is in {{jsxref("Functions_and_function_scope/Strict_mode", "non-strict mode", "", 1)}} code, dan zullen {{jsxref("Global_Objects/null", "null")}} en {{jsxref("Global_Objects/undefined", "undefined")}} worden vervangen met het globale object en primitieve waardes worden omgezet naar objecten.
+
arg1, arg2, ...
+
De argumenten voor het object.
+
+ +

Return waarde

+ +

Het resultaat van het aanroepen van de functie met de gespecificeerde this waarde en argumenten.

+ +

Omschrijving

+ +

De call() methode staat het toe dat een functie of methode van een object om te worden toegewezen en aangeroepen voor een ander object.

+ +

Een ander this object worden toegewezen als er een bestaande functie wordt aangeroepen. this verwijst in principe naar het huidige object, het object wat de aanroep doet. Met call kun je een methode eenmaal schrijven en dan door overerving gebruiken in een ander object, zonder dat je de methode hoeft te herschrijven voor het nieuwe object.

+ +

Voorbeelden

+ +

call gebruiken om constructors aan elkaar te ketenen voor een object

+ +

call kan gebruikt worden om constructors voor een object aan elkaar te ketenen, vergelijkbaar met de werkwijze in Java. In het volgende voorbeeld is de constructor voor het Product object gedefineerd met twee parameters; name en price. De twee andere functies, Food en Toy, roepen Product aan en geven thisname en price mee. Product initializeert de eigenschappen name en price, en deze gespecializeerde functies defineren de category

+ +
function Product(name, price) {
+  this.name = name;
+  this.price = price;
+
+  if (price < 0) {
+    throw RangeError('Cannot create product ' +
+                      this.name + ' with a negative 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 gebruiken om een anonieme functie aan te roepen

+ +

In dit voorbeeld hebben we een anonieme functie, en gebruiken we call om deze aan te roepen voor elk object in een array. Het voornaamste doel van de anonieme functie is het toevoegen van een print functie aan elk object in de array. Het object meegeven als this waarde is niet strict noodzakelijk, maar laat wel de werking zien.

+ +
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);
+}
+
+ +

Call gebruiken om een functie aan te roepen en een context te geven aan 'this'.

+ +

In het onderstaande voorbeeld zal de waarde van this gebonden zijn aan het object obj wanneer we greet aanroepen.

+ +
function greet() {
+  var reply = [this.person, 'is An Awesome', this.role].join(' ');
+  console.log(reply);
+}
+
+var obj = {
+  person: 'Douglas Crockford', role: 'Javascript Developer'
+};
+
+greet.call(obj); // Douglas Crockford Is An Awesome Javascript Developer
+
+ +

Call gebruiken om een functie aan te roepen zonder eerste argument

+ +

In het onderstaande voorbeeld roepen we de display functie aan zonder het eerste argument mee te geven. Als het eerste argument niet is meegegeven zal this worden gebonden aan het globale object.

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

Note: De waarde van this is undefined in strict mode. Zie onderstaand.

+
+ +
'use strict';
+
+var sData = 'Wisen';
+
+function display() {
+  console.log('sData value is %s ', this.sData);
+}
+
+display.call(); // Cannot read the property of 'sData' of undefined
+ +

Specificaties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initiele definitie. Geimplementeerd in JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.3.4.4', 'Function.prototype.call')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-function.prototype.call', 'Function.prototype.call')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-function.prototype.call', 'Function.prototype.call')}}{{Spec2('ESDraft')}}
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome voor AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

See also

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