Call methods on native Javascript types without wrapping with ()
        Posted  
        
            by Anurag
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Anurag
        
        
        
        Published on 2010-04-28T03:14:34Z
        Indexed on 
            2010/04/28
            3:23 UTC
        
        
        Read the original article
        Hit count: 252
        
In Javascript, we can call methods on string literals directly without enclosing it within round brackets. But not for other types such as numbers, or functions. It is a syntax error, but is there a reason as to why the Javascript lexer needs these other types to be enclosed in round brackets?
For example, if we extend Number, String, and Function with an alert method and try calling this method on the literals, it's a SyntaxError for Number and Function, while it works for a String.
function alertValue() {
    alert(this);
}
Number.prototype.alert = alertValue;
String.prototype.alert = alertValue;
Function.prototype.alert = alertValue;
We can call alert directly on a string object:
"someStringLiteral".alert() // alerts someStringLiteral
but it's a SyntaxError on numbers, and functions.
7.alert();
function() {}.alert();
To work with these types, we have to enclose it within brackets:
(7).alert(); // alerts "7"
(function() {}).alert(); // alerts "function() {}"
© Stack Overflow or respective owner