-2

我在从对象返回值时遇到问题。我的对象看起来像这样。

   function XYZ(date, startT)
     {
     var _date=date;
     var _startT=startT;
     this.get_date = function() {
       return _date;
       };
      this.set_date = function(value) {
        _date=value;
      };
       this.get_startT = function() {
       return _startT;
       };
       this.set_startT = function(value) {
       _startT=value;
      };
      this.toString()
      return (_date + " " _startT);
      }

然后我创建一个这样的数组

   jsData[0] =new XYZ("2012-11-11","8:00");
   jsData[1] = new XYZ("2012-03-03","8:00");

当我想使用 get_date 方法时,它没有返回值,但 get_startT 方法工作正常。当我使用 .toString 方法显示对象时,它也会显示完整的对象

请帮忙。

4

3 回答 3

1

如果您修复所有语法错误,它会起作用:

function XYZ(date, startT) {
  var _date=date;
  var _startT=startT;
  this.get_date = function() {
    return _date;
  };
  this.set_date = function(value) {
    _date=value;
  };
  this.get_startT = function() {
    return _startT;
  };
  this.set_startT = function(value) {
    _startT=value;
  };
}

var jsData = [];
jsData[0] = new XYZ("2012-11-11","8:00");
jsData[1] = new XYZ("2012-03-03","8:00");

display("jsData[0].get_date() = " + jsData[0].get_date());

输出:

jsData[0].get_date() = 2012-11-11

实时复制| 来源

除了明显的错别字之外,这就是我所做的:

  • 放置{}环绕函数体。

  • 删除了this.toString()不起作用的(无操作,因为您没有将结果存储在任何地方)。

  • 删除了最后的返回,因为从构造函数返回字符串原语是另一个无操作。

  • 宣布jsData

  • 初始化jsData

于 2012-11-20T09:41:41.947 回答
0

{之后您似乎缺少一个左括号

function XYZ(date, startT)

在你的代码末尾有一个。( })

于 2012-11-20T09:37:42.297 回答
0

尝试像这样向函数原型添加方法:

function XYZ(date, startT) {
  this._date = date;
  this._startT = startT;
}

XYZ.prototype.get_date = function() {
  return this._date;
}
XYZ.prototype.set_date = function(value) {
  this._date = value;
}
XYZ.prototype.get_startT = function() {
  return this._startT;
}
XYZ.prototype.set_startT = function(value) {
  this._startT = value;
}
XYZ.prototype.toString = function() {
  return this._date + " " + this._startT;
}

var myXYZ = new XYZ("2012-11-11","8:00");
myXYZ.toString(); // "2012-11-11 8:00"

我在控制台中对其进行了测试,它正确输出了最终字符串。

于 2012-11-20T09:45:58.393 回答