不能分配这个。对象原型中的变量

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 属性 分配给其 thismsg 属性。但是此时的 this 指的是 global/window 对象 - 其 .msg 属性 未定义。

另一方面,当display被调用时,实例化对象已经有了它的构造函数运行,所以实例化对象的msg属性has 已填充,and display 运行 具有预期的调用上下文。 (其中 this 是实例化对象)只需继续使用 display 属性.

(此外,您没有在原型中定义构造函数:只需在原型中完全离开 constructor: 行)