不能分配这个。对象原型中的变量
Cannot assign this. variables in object prototypes
我目前正在研究 javascript 原型,但我对它的实际工作原理感到很困惑。我有这个代码片段,它工作得很好
function Message(msg){
this.msg =msg;
}
Message.prototype = {
constructor:Message,
display: function(){
return this.msg;
}
};
alert(new Message("007").display());
这段代码试图做的是通过使用javascript来说明一个简单的封装。
现在的问题是,我想添加这个 text:this.msg 而不是使用显示方法
Message.prototype = {
constructor:Message,
someValue:99,
text: this.msg,
display: function(){
return this.msg;
}
};
但我只有在调用时才会得到 undefined
alert(new Message("007").text);
但是打电话
alert(new Message("007").someValue);
显示99。这是什么问题?
在声明原型时,它看到行 text: this.msg,
并将其 text
属性 分配给其 this
的 msg
属性。但是此时的 this
指的是 global/window 对象 - 其 .msg
属性 未定义。
另一方面,当display
被调用时,实例化对象已经有了它的构造函数运行,所以实例化对象的msg
属性has 已填充,and display
运行 具有预期的调用上下文。 (其中 this
是实例化对象)只需继续使用 display
属性.
(此外,您没有在原型中定义构造函数:只需在原型中完全离开 constructor:
行)
我目前正在研究 javascript 原型,但我对它的实际工作原理感到很困惑。我有这个代码片段,它工作得很好
function Message(msg){
this.msg =msg;
}
Message.prototype = {
constructor:Message,
display: function(){
return this.msg;
}
};
alert(new Message("007").display());
这段代码试图做的是通过使用javascript来说明一个简单的封装。
现在的问题是,我想添加这个 text:this.msg 而不是使用显示方法
Message.prototype = {
constructor:Message,
someValue:99,
text: this.msg,
display: function(){
return this.msg;
}
};
但我只有在调用时才会得到 undefined
alert(new Message("007").text);
但是打电话
alert(new Message("007").someValue);
显示99。这是什么问题?
在声明原型时,它看到行 text: this.msg,
并将其 text
属性 分配给其 this
的 msg
属性。但是此时的 this
指的是 global/window 对象 - 其 .msg
属性 未定义。
另一方面,当display
被调用时,实例化对象已经有了它的构造函数运行,所以实例化对象的msg
属性has 已填充,and display
运行 具有预期的调用上下文。 (其中 this
是实例化对象)只需继续使用 display
属性.
(此外,您没有在原型中定义构造函数:只需在原型中完全离开 constructor:
行)