如何在创建时创建一个新对象 运行 的实例?

How do I make an instance of a new object run its methods upon creation?

您好,我在自调用属于对象原型的函数时遇到问题。我的目标是为自定义对象创建一个方法,该方法调用它在创建实例时具有的函数。

function Message(text) {
  this.text = text;
}

Message.prototype.send = function() {
  alert(this.text);
}();

var testMessage = new Message("Hello Goodbye");

这里的问题是我在创建 Message 对象的实例时收到 undefined。这可能与关键字 "this" 的定义方式有关,尽管我不完全确定。但是,如果不是将方法添加到原型中,而是将其放入函数中,它会像下面的那样工作得很好。

function Message(text) {
  this.text = text;
  this.send = function() {
    alert(text);
  }();
}

var testMessage = new Message("Hello Goodbye");

发送方法在您使用 () 调用它时准确运行 - 检查您的控制流。

在第一种情况下,您在 Message 的原型属性上定义了一个函数,然后调用它。它警告未定义,因为 Message.prototype(this 在该上下文中)不包含文本属性。

在第二种情况下,您在调用 send 之前将 text 添加到 this,从而在警报运行时定义它。