Question: The below doesnt work and im struggling to work out why....

```
function CommentHandler() {

    var Text;
}

var myCommentHandler = new CommentHandler();

myCommentHandler.prototype.SayHello = function () {

    document.write('Hello World');

}

```

I get the error : 'myCommentHandler.prototype is undefined'

I just cant see why? I have declared a variable called myCommentHandler and copied in the object CommentHandler then Im trying to access the protoype of it and assign a function but I cant...Anyone know why?

Answer: 
The prototype belongs to the *class*, not the *instance*:

```
CommentHandler.prototype.MyFunction = ...

```

However you can also access the prototype via the instance's `constructor` property:

```
myObj.constructor.prototype.MyFunction = ...

```

This will of course add that function to *every* instance of your CommentHandler.

If instead you only wanted to add that function to that *one* instance, you'd do:

```
myObj.MyFunction = ...

```

Note that in none of these variants would it be possible for `MyFunction` to access your private variable `Text`.

This is the compromise forced by the prototype inheritance model - variables and methods must be public (e.g. `this.Text`) if they're to be accessed from outside, and in this case functions declared in the prototype are effectively "outside".

The alternative (using closure-scoped variables and methods) seems more natural to OO programmers, but makes inheritance much harder.
You need to prototype the class function rather than the instance. Also if you want the `Text` variable to be accessible outside the constructor, in the other method functions, then you need to add the `this` keyword.

```
function CommentHandler() {
    this.Text = 'Hello World';
}

CommentHandler.prototype.SayHello = function () {
    document.write(this.Text);
}

var myCommentHandler = new CommentHandler();
myCommentHandler.SayHello();

```

As a side point you could create the `SayHello` function inside the constructor, but this would add increased overhead to the creation of each instance of `CommentHandler`. Thus the prototyping method that you are using is a better option.