我有一个 javascript 类 Data
,我试图在其中获取对象的字符串表示形式:
function Data(t, s, m) {
this.time = t;
this.sender = s;
this.message = m;
var stringRep = function() {
return ("time:" + this.time + " sender:" + this.sender + " message:" + this.message)
};
console.log(this.stringRep); //returns undefined
var typeRep = (jQuery.type(1234));
console.log(this.typeRep); //returns undefined
Data.prototype.toString = function DataToString() {
var ret = "time:" + this.time + " sender:" + this.sender + " message:"
+ this.message;
return ret;
}
console.log(this.toString()); //returns correct toString representation
}
首先,我尝试使用stringRep
,它给出了undefined
。然后我什至尝试获取简单的“否”类型。攀上漂亮女局长之后1234最后我得到了MDN的帮助正确重写toString
方法。
以前的方法出了什么问题?
最佳答案
您正在处理范围界定问题。首先,您的 stringRep
函数并未定义为 Data
的属性,而只是定义为变量。你想做的是这样的:
function Data(t, s, m) {
this.stringRep = function() {
// Your definition goes here
};
// Now you can call it like so
console.log(this.stringRep());
};
至于您的 toString
,您正确地覆盖了它,但如果您在构造函数中执行此操作,则每次生成新的 Data
实例时都会重新创建它。相反,试试这个:
function Data(t, s, m) {
// All of your code except for toString
};
Data.prototype.toString = function() {
var ret = "time:" + this.time + " sender:" + this.sender + " message:"
+ this.message;
return ret;
};
关于javascript - 获取对象的字符串表示的不同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25205748/