コードに多くの問題があります。まず、コンストラクター関数を呼び出して、何かをインスタンス化しようとしています。あなたtestObject
は関数ではないので、型エラーが発生します。testObject
あなたはこれらの線に沿った何かになるように変更する必要があります:
var TestObject = function () {
this.value = "this is my initial value";
};
TestObject.prototype.setup = function () {
this.value = "foo";
};
その識別子に大文字を使用していることに注意してくださいT
...これはコンストラクター関数のベストプラクティスです。また、でメソッドを定義したsetup
方法にも注目してprototype
ください。this.setup
これは、関数のコピーが1つだけメモリに存在する必要があるため、インスタンスのプロパティとして(を使用して)定義するよりもはるかに効率的です。
これが関数であるため、演算子TestObject
を使用して呼び出すことでインスタンス化できます。new
var myFirstObject = new TestObject();
var mySecondObject = new TestObject();
setup
のインスタンスでメソッドを呼び出すと、TestObject
そのインスタンスに適用されます。つまり、メソッドthis
内の値はsetup
、メソッドが呼び出されたインスタンスを参照します。
myFirstObject.setup();
console.log(myFirstObject.value); // 'foo'
console.log(mySecondObject.value); // 'this is my initial value'