I have something like this:
dog = function () {
this.age;
this.name;
this.dog1 = new dog.shepherd();
}
dog.prototype = {
bark : function () {
alert( (this.getName()) + " is barking." );
},
[3]**getName** : function () {
return this.name;
}
}
dog.shepherd = function () {
this.something;
}
dog.shepherd.prototype = function () {
guard : function () {
alert( ([2]**parent.getName()**) + " is barking." );
}
}
window.onload = function () {
var n = new dog();
[1]**n.guard()**;
}
How can I use a function which is prototyped to the dog from dog.speherd prototype?
In other words, when [1] is executed, then [2] is written in pseudo-code, to call [3].
I know this code shouldn’t work; it’s just to help me explain what I want.
Your title says you want to use composition, but your question body implies inheritance. Here’s how you would do this with composition, which is probably the better option. A shepherd “is not a” dog after all (nor vice versa) so inheritance probably isn’t right here.
Also, you usually don’t want to set the entire prototype of a function like you’re doing; just add the functions you want. And constructor functions by convention start with a capital letter.
jsfiddle