如何创建新对象的实例在创建时运行其方法?

时间:2015-06-29 08:58:02

标签: javascript oop object prototype this

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



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

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

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




这里的问题是我在创建Message对象的实例时收到undefined。它可能与关键字的方式有关,"这个"被定义为,虽然我不完全确定。但是,如果不是将方法添加到原型中而只是将其放入函数中,它就可以像下面那样正常工作。



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

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




1 个答案:

答案 0 :(得分:0)

当您使用()调用send方法时,它会完全运行 - 检查您的控制流。

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

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