Search code examples
actionscript-3actionscriptflex3

why overloading not support in Actionscript?


Action script is developed based on object oriented programming but why does it not support function overloading?

Does Flex support overloading?

If yes, please explain briefly with a real example.


Solution

  • As you say, function overloading is not supported in Action Script (and therefore not even in Flex).

    But the functions may have default parameters like here:

    public function DoSomething(a:String='', b:SomeObject=null, c:Number=0):void
    

    DoSomething can be called in 4 different ways:

    DoSomething()
    DoSomething('aString')
    DoSomething('aString', anObject)
    DoSomething('aString', anObject, 123)
    

    This behavior maybe is because Action Script follows the ECMA Script standard. A function is indeed one property of the object, so, like you CAN'T have two properties with the same name, you CAN'T have two functions with the same name. (This is just a hypothesis)

    Here is the Standard ECMA-262 (ECMAScript Language Specification) in section 13 (page 83 of the PDF file) says that when you declare a function like

    function Identifier(arg0, arg1) {
        // body
    }
    

    Create a property of the current variable object with name Identifier and value equals to a Function object created like this:

    new Function(arg0, arg1, body)
    

    So, that's why you can't overload a function, because you can't have more than one property of the current variable object with the same name