【问题标题】:Problems returning Property of object as a date object将对象的属性作为日期对象返回的问题
【发布时间】:2016-09-27 15:19:57
【问题描述】:

我有一个对象叫做人。我想做的是让生日方法使用外部变量返回生日的日期对象,见下文。我已经尝试了几种方法来让它工作,但没有运气。 我得到的最好的是 警报(人。生日()); //NaN

var person = {
firstName: "John",
mi: "G",
lastName: "Davis",
birthday: function() {
    var x = new Date(bYear, bMonth, bDay);
    return x();
    },    
}

如果我是 JavaScript 新手,我将不胜感激,这给我带来了一些问题。
变量 bYear = 1976; var bMonth = "二月"; var bDay = 18;

【问题讨论】:

  • 首先x不是函数,所以应该是return x;。其次,Febuary 不是有效月份,而是期待1

标签: javascript function date object methods


【解决方案1】:

如果你想得到一个人的生日,我建议你这个简单的解决方案:

var person = {
    firstName: "John",
    bYear: 1976,
    bMonth: 1, //February
    bDay: 18,
    mi: "G",
    lastName: "Davis",
    birthday: function() {
    var x = new Date(this.bYear, this.bMonth, this.bDay);
        return x;
    }
}  

bYearbMonthbDay 是人的附加属性,因此birthday 函数采用这三个参数返回日期对象。

这里有关于 Date 对象的信息:http://www.w3schools.com/js/js_dates.asp

祝你好运!

【讨论】:

  • 请不要引用 w3schools,该网站充满了错误。使用ECMA-262MDN
【解决方案2】:

new Date(year, month, day) 函数需要数组格式的月份,即:'0'=>January, '1'=>February,etc... 同样如前所述,无需创建“var x”。

      var person = {
        firstName: "John",
        mi: "G",
        lastName: "Davis",
        bYear: 1976,
        bMonth: 1, 
        bDay: 18,
        birthday: function() {
              return new Date(bYear, bMonth, bDay);
               },    
    }
person.birthday();

【讨论】:

    【解决方案3】:

    您可以访问外部变量,但您的代码中有一些错误,例如 return x() 和日期格式。请尝试以下操作。

    var person = {
    firstName: "John",
    mi: "G",
    lastName: "Davis",
    birthday: function() {
        var x = new Date(bYear+"/"+bMonth+"/"+bDay);
        return x;
        },    
    }
    var bYear = "1976";
    var bMonth = "February";
    var bDay = "18";
    
    console.log(person.birthday());

    虽然我不得不说这不是一个通常的实现。个人信息应保存在该对象内。

    【讨论】:

    • 是的,我同意所有信息都应该是 person 对象的一部分。我尝试这样做的原因是允许用户在表单上输入并将生日信息组合起来并将其作为单个 Date 对象放入 person 对象中.....
    【解决方案4】:

    好的,我明白了,谢谢你的帮助。 Person 对象的出生月份、日期和年份不应包含在 Person 对象中。有了您的建议和答案,我设法得到了下面的一些工作代码。

    var person = {
        firstName: "John",
        mi: "G",
        lastName: "Davis",
        birthday: function() {
            var x = new Date(bYear, bm, bDay);
            return x;        
            }
        }
    
    var bYear = 1976;
    var bMonth = "February";
    var bDay = 18;
    
    var month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    var bm = month.indexOf(bMonth);
    

    这让我获取月份的字符串并为生日方法获取函数的数值。

    【讨论】:

      猜你喜欢
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多