/*
All texts and infos I have taken from:
'JavaScript: The Good Parts' by Douglas Crockford
*/
// there are four invocation patterns:
// method invocation pattern
// function invocation pattern
// constructor invocation pattern
// apply invocation pattern
// the difference is how the hidden parameter this is handled
// >> apply invocation pattern <<
// since JS is a functional object-oriented language,
// functions can have methods
// with apply we can provide an array of arguments
// and the value for this
var add = function add(a, b) {
return a + b;
};
var array = [3, 4];
var sum = add.apply(null, array); // we don't need a certain this
console.log("sum should be 7:",sum);
var statusObject = {
status: 'A-OK'
};
var Quo = function Quo(string) {
this.status = string;
};
Quo.prototype.getStatus = function getStatus() {
return this.status;
};
// so let's apply the previous prototype function to
// our statusObject, which doesn't have this method
var status = Quo.prototype.getStatus.apply(statusObject);
console.log("status should be 'A-OK'", status);
Please Whitelist JSFiddle in your content blocker.
Help keep JSFiddle free for always by one of two ways:
Whitelist JSFiddle in your content blocker (two clicks)
Go PRO and get access to additional PRO features →
Join the 4+ million users, and keep the JSFiddle dream alive.
Ad-free
All ads in the editor and listing pages are turned completely off.
Use pre-released features
You get to try and use features (like the Palette Color Generator) months before everyone else.
Fiddle collections
Sort and categorize your Fiddles into multiple collections.
Private collections and fiddles
You can make as many Private Fiddles, and Private Collections as you wish!
Console
Debug your Fiddle with a minimal built-in JavaScript console.