您的代码有很多问题。首先,您试图通过调用构造函数来实例化某些东西。你testObject不是一个函数,所以你会导致一个类型错误。您需要testObject按照以下方式进行更改:
var TestObject = function () {
this.value = "this is my initial value";
};
TestObject.prototype.setup = function () {
this.value = "foo";
};
请注意,我T在该标识符中使用了大写字母……这只是构造函数的最佳实践。还要注意我是如何setup在prototype. 这比将其定义为实例的属性(使用 )要高效得多,this.setup因为内存中只需要存在一个函数副本。
现在这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'