Add functions to another ones

A

Archos

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()
 
T

tema

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/
 
T

tema

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/
 
A

Asen Bozhilov

tema said:
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;
})();
 
J

John G Harris

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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,733
Messages
2,569,439
Members
44,829
Latest member
PIXThurman

Latest Threads

Top