获取对象的字符串表示的不同方法
Different ways of obtaining string representation of object
我有一个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使用typeRep
,也返回undefined
。最后,我得到了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;
};
你犯了两个错误:
- 您将
stringRep
定义为私有变量,并试图调用它通过做this.stringRep
。你需要把它定义为数据的实例执行this.stringRep = function(){ //...}
-
stringRep
是一个函数,你需要做this.stringRep()
来执行它。
顺便说一下,您应该避免覆盖toString()
方法。
编辑:更具体地说:我个人认为这可能会让开发人员感到困惑,因为他们可能认为他们使用的是原生 JavaScript方法,但如果你不这样认为,也没有问题。
您使用var stringRep和var typeep创建了2个局部变量,但随后试图使用这个将它们作为Data类的字段记录下来。stringRep和这个。
基本上,stringRep
和typeRef
都被定义为私有变量,但您试图将它们用作字段。因此,理想情况下应该使用this.
前缀定义这两个变量,或者干脆避免使用this.
前缀调用这两个变量。
相关文章:
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 在JavaScript中拆分日期字符串的更好方法是什么
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- jQuery字符串使用split()方法在空格后拆分字符串
- 使用查询字符串方法清除浏览器缓存
- 检查变量是否为字符串的简单方法
- 使用.join方法将数组转换为不带逗号的字符串
- Javascript:不使用.split()方法拆分字符串
- 使用子字符串方法时应用程序挂起的原因
- 如何更改字符串的查找方法
- 什么时候字符串不是字符串?当它没有 include() 方法时
- get没有方法“writefile”,即使输入是一个字符串
- 在JavaScript中,有没有一种方法可以解析JSON,将数字转换为字符串
- 使用 MVC 删除 JavaScript 中硬编码字符串 Asp.Net 最佳方法
- 使用 eval 从字符串创建函数的不同方法
- Javascript CharAt 方法不适用于字符串
- Javascript方法以字符串形式返回方法代码
- 为什么String的方法.字符串字面值可用的原型
- 如何在javascript参数函数中传递PHP post方法字符串