Add functions to another ones

Discussion in 'Javascript' started by Archos, Feb 18, 2012.

  1. Archos

    Archos Guest

    Is there any way for that a function can be added/embedded to a
    constructor?

    function hello() {console.log("hello")}
    function Sum(x, y) { this.a=a; this.b=b; }

    In that example I would want that function hello() can be added to
    Sum()
     
    Archos, Feb 18, 2012
    #1
    1. Advertising

  2. Archos

    tema Guest

    On Feb 18, 3:42 pm, Archos <> wrote:
    > Is there any way for that a function can be added/embedded to a
    > constructor?
    >
    > function hello() {console.log("hello")}
    > function Sum(x, y) { this.a=a; this.b=b; }
    >
    > In that example I would want that function hello() can be added to
    > Sum()


    function hello() {console.log("hello")}
    function Sum(x, y) { this.a=x; this.b=y; }

    Sum = (function(SumOld) {
    hello();
    return SumOld;
    })(Sum);

    var h = new Sum(2, 3);
    console.log(h);

    http://jsfiddle.net/WS4fz/
     
    tema, Feb 18, 2012
    #2
    1. Advertising

  3. Archos

    tema Guest

    On Feb 18, 3:42 pm, Archos <> wrote:
    > Is there any way for that a function can be added/embedded to a
    > constructor?
    >
    > function hello() {console.log("hello")}
    > function Sum(x, y) { this.a=a; this.b=b; }
    >
    > In that example I would want that function hello() can be added to
    > Sum()


    function hello() {console.log("hello")}
    function Sum(x, y) { this.a=x; this.b=y; }

    Sum = (function(SumOld) {
    function construct(constructor, args) {
    function F() {
    return SumOld.apply(this, args);
    }
    F.prototype = constructor.prototype;
    return new F();
    }

    return function() {
    hello();
    return construct(SumOld, [2, 3]);
    }
    })(Sum);

    var h = new Sum(2, 3);
    console.log(h);

    http://jsfiddle.net/agentcooper/qLMUz/
     
    tema, Feb 18, 2012
    #3
  4. Archos

    tema Guest

    On Feb 18, 3:42 pm, Archos <> wrote:
    > Is there any way for that a function can be added/embedded to a
    > constructor?
    >
    > function hello() {console.log("hello")}
    > function Sum(x, y) { this.a=a; this.b=b; }
    >
    > In that example I would want that function hello() can be added to
    > Sum()


    Here you go http://jsfiddle.net/agentcooper/qLMUz/
     
    tema, Feb 18, 2012
    #4
  5. Archos

    Archos Guest

    On Feb 18, 2:00 pm, tema <> wrote:
    > On Feb 18, 3:42 pm, Archos <> wrote:
    >
    > > Is there any way for that a function can be added/embedded to a
    > > constructor?

    >
    > > function hello() {console.log("hello")}
    > > function Sum(x, y) { this.a=a; this.b=b; }

    >
    > > In that example I would want that function hello() can be added to
    > > Sum()

    >
    > Here you gohttp://jsfiddle.net/agentcooper/qLMUz/


    Thanks. Although I thought that I could be done easily using 'apply'
    or a similar function.
     
    Archos, Feb 18, 2012
    #5
  6. tema wrote:

    > > function hello() {console.log("hello")}
    > > function Sum(x, y) { this.a=a; this.b=b; }

    >
    > > In that example I would want that function hello() can be added to
    > > Sum()

    >
    > Here you gohttp://jsfiddle.net/agentcooper/qLMUz/


    In first place it would be nice if the next time you post your code to
    be directly here. It is definitely easier to quote different parts of
    your code if it is in messages. Of course you could post here and post
    link in jsfiddle. Also if jsfiddle removes your code the archive of
    the group will store a broken link. In the last place not everyone is
    on the web in newsgroup like that.

    Such a design is better to avoid. I would use wrapper or subclassing
    `Sum' instead of overwriting the constructor. Your approach after
    overwriting the `Sum' with new function If I would like to extend the
    `Sum.prototype', I would have a big problem. The `Sum' is not longer
    constructor, it is factory for overwritten `Sum'.

    Sum.prototype.missedLogic = function () {
    console.log('Missed logic');
    };

    var h = new Sum(2, 3);
    h.missedLogic(); //TypeError

    If you and the author want real overwritten constructor, you could
    use:

    function hello() {console.log("hello")}
    function Sum(x, y) { this.a=x; this.b=y; }


    Sum = (function () {
    var _Sum = Sum;
    function SumWrapper() {
    _Sum.apply(this, arguments);
    hello();
    }
    SumWrapper.prototype = new _Sum;
    return SumWrapper;
    })();
     
    Asen Bozhilov, Feb 18, 2012
    #6
  7. On Sat, 18 Feb 2012 at 04:42:22, in comp.lang.javascript, Archos wrote:
    >Is there any way for that a function can be added/embedded to a
    >constructor?
    >
    >function hello() {console.log("hello")}
    >function Sum(x, y) { this.a=a; this.b=b; }
    >
    >In that example I would want that function hello() can be added to
    >Sum()


    Have you realised that you've been asking some very peculiar questions.
    Have you spent some time working out what you want to do, without
    worrying about how to do it ?

    If you have, have you understood the way prototypes work and how they
    can help you ?

    John
    --
    John Harris
     
    John G Harris, Feb 18, 2012
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Paulo Valentim

    Ones Counter

    Paulo Valentim, Oct 20, 2004, in forum: VHDL
    Replies:
    0
    Views:
    1,311
    Paulo Valentim
    Oct 20, 2004
  2. Replies:
    0
    Views:
    689
  3. =?Utf-8?B?Um9iS2FyYXR6YXM=?=

    application keys in web config (no taking new ones?)

    =?Utf-8?B?Um9iS2FyYXR6YXM=?=, Dec 12, 2005, in forum: ASP .Net
    Replies:
    3
    Views:
    730
    Karl Seguin
    Dec 12, 2005
  4. =?Utf-8?B?Sm9u?=

    Debug DLL Performance over runtime ones

    =?Utf-8?B?Sm9u?=, Mar 31, 2006, in forum: ASP .Net
    Replies:
    1
    Views:
    424
    =?Utf-8?B?UGV0ZXIgQnJvbWJlcmcgW0MjIE1WUF0=?=
    Mar 31, 2006
  5. Xiangliang Meng
    Replies:
    1
    Views:
    1,629
    Victor Bazarov
    Jun 21, 2004
Loading...

Share This Page