如何将当前日期动态添加到对象的新实例并将其推送到数组

How to dynamically add current date to a new instance of an object and push it to an array

本文关键字:实例 数组 新实例 动态 当前日期 添加 对象      更新时间:2023-09-26

我已经设置了一个函数来以我想要的格式获取当前日期和时间:

function date(){
        var d = new Date();
        var minutes = d.getMinutes();
        var month = d.getMonth() +1;
        if(minutes<10){
            return (d.getDate() + "/" + month + "/" + d.getFullYear() + " " + d.getHours() + ":" + "0" + minutes);
        }else{
            return (d.getDate() + "/" + month + "/" + d.getFullYear() + " " + d.getHours() + ":" + minutes);}
        }

我创建了一个Object,该采用(amount,date,type)值。 如何设置它,以便对于对象的每个新实例,函数date()自动生成日期值,以便在将其推送到数组movements添加时间戳时?

这是我的代码:

var movements =[];
//transactions
var initialBalance = new Transaction(1000,"date","cash");
var addIn = new Transaction(500,"date","cash");
var addOut = new Transaction(-300,"date","card");
//add the transactions to the movements array
movements.unshift(initialBalance);
movements.push(addIn);
movements.push(addOut);

我想用纯JS来做这件事。

也许将date函数添加到对象中

var Transaction = function(amount, type) {
    this.date = (function() {
        var d = new Date();
        var minutes = d.getMinutes();
        var month = d.getMonth() +1;
        if (minutes<10) {
            return (d.getDate() + "/" + month + "/" + d.getFullYear() + " " + d.getHours() + ":" + "0" + minutes);
        } else {
            return (d.getDate() + "/" + month + "/" + d.getFullYear() + " " + d.getHours() + ":" + minutes);
        }
    })();
    // now deal with amount and type...
}

创建对象后,该函数将自行评估。

您可以覆盖数组上的推送...

var movements = [];
movements.push = function(transaction) {
    transaction.date = date();
    return Array.push(transaction);
};

按照您当前设置它的方式,您只需将"date"替换为对date()的函数调用:

//transactions
var initialBalance = new Transaction(1000,date(),"cash");
var addIn = new Transaction(500,date(),"cash");
var addOut = new Transaction(-300,date(),"card");

但是,正如其他人所建议的那样,可能有更好的方法来做你想做的事情。