您的代码有很多问题。首先,您试图通过调用构造函数来实例化某些东西。你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'