您好,我在自行调用属于对象原型的函数时遇到问题。我的目标是为自定义对象创建一个方法,该方法在创建实例时调用它所具有的函数。
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");

答案 0 :(得分:0)
当您使用()
调用send方法时,它会完全运行 - 检查您的控制流。
在第一种情况下,在Message&#39的prototype属性上定义一个函数,然后调用它。它警告未定义,因为Message.prototype(该上下文中的this
)不包含文本属性。
在第二种情况下,您在调用text
之前将this
添加到send
,从而在警报运行时将其定义。