The bind() method creates a new function that, when called, has its this keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.
The call() method calls a function with a given this value and arguments provided individually.
Tests whether this object has the specified property as a direct property.
Tests whether this object is in the prototype chain of another object.
length is a property of a function object, and indicates how many arguments the function expects, i.
Tests whether the specified property in an object can be enumerated by a call to js.Object.properties, with the exception of properties inherited through the prototype chain.