JavaScript Objects With Value - valueOf and toString |
Written by Mike James | ||||||
Friday, 08 March 2013 | ||||||
Page 2 of 2
FunctionsNow we come to a tricky area. In JavaScript functions are objects - yes they can have properties and methods. They can therefore have toString and valueOf methods. What this means is that a function can return three different values depending on how it is used. Consider:
After this what does:
display? Answer: "A". What does
display? Answer: 2. Finally, what does:
display? Answer: 1. This also raises the issue of why bother using a function if general objects can return a value? The reason is fairly obvious but deserves some thought. Functions Versus ObjectsYou do have a choice of associating a value with an object as in:
You also can define a function that does the same thing:
The difference is that the function has a natural way to accept arguments. For example, you can write:
but without defining it to be a function you can't write:
In other words, objects can simply represent a value or a state. That value or state can be manipulated by the methods that the object provides but it cannot be modified while it is being used in an expression. A function, on the other hand, represents a relationship between input data and the result. Notice also that, while a function is an object, not all objects are functions and in this sense a function is a "bigger" object. When should you consider using a value associated with an object? Some might reply "never" as it isn't a common pattern and could be confusing. However, if an object represents data or something with state then it is a good approach. Consider the JavaScript date object:
The toString function returns the number of milliseconds since the date epoch. A Date object is an ideal example of when to use an object as a value.
Related ArticlesA JavaScript TimeInterval object Javascript Jems - First class functions Overriding a JavaScript global function - parseInt
To be informed about new articles on I Programmer, subscribe to the RSS feed, follow us on Google+, Twitter, Linkedin or Facebook, install the I Programmer Toolbar or sign up for our weekly newsletter.
Comments
or email your comment to: comments@i-programmer.info
|
||||||
Last Updated ( Thursday, 23 May 2019 ) |