javascript 将函数作为对象返回 属性

javascript returning function as an object property

我正在做一个程序,我必须 return 关于一个文件的信息 object.The 对象包含四个属性: 1st 属性 named : birthTime : 包含文件的出生时间(以毫秒为单位)。 第二个 属性 named : modifiedTime : 包含以毫秒为单位修改文件的时间。 第三个 属性 named : size :包含文件的大小。 第 4 个 属性 named : type : 包含文件的类型,即它是文件还是目录。

我的代码是:

const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {birthTime: stats.birthtimeMs , 
    modifiedTime: stats.mtimeMs , 
    size: stats.size , 
    type: function(){if(stats.isFile()===true){return "File"}
                          else{return "Directory"}}}
    console.log(obj);
});

当我 运行 它时,我得到: { birthTime: 2019-07-16T18:00:51.674Z, modifiedTime: 2019-07-16T18:00:51.674Z, size: 327, type: [Function: type] }

如何使代码 return "File" 而不是 [Function: type]

使用三元

const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
    var obj = {
        birthTime: stats.birthtime , 
        modifiedTime: stats.mtime , 
        size: stats.size , 
        type: stats.isFile() ? "File" : "Directory"
    };
    console.log(obj);
});

使用 IIFE

const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
    var obj = {
        birthTime: stats.birthtime , 
        modifiedTime: stats.mtime , 
        size: stats.size , 
        type: (function(){
            if(stats.isFile()) {
                return "File";
            } else {
                return "Directory";
            }
        })()
    };
    console.log(obj);
});

在别处声明函数并调用它

function checkType(stats) {
    return stats.isFile() ? "File" : "Directory";
}

const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
    var obj = {
        birthTime: stats.birthtime , 
        modifiedTime: stats.mtime , 
        size: stats.size , 
        type: checkType(stats)
    };
    console.log(obj);
});

计算变量中的值并将其存储

const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
    var type = stats.isFile() ? "File" : "Directory";
    var obj = {
        birthTime: stats.birthtime , 
        modifiedTime: stats.mtime , 
        size: stats.size , 
        type: type 
    };
    console.log(obj);
});

删除函数,改用三元运算符:

type: stats.isFile() ? 'File' : 'Directory'

将其设为IIFE(立即调用的函数表达式)

const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {birthTime: stats.birthtime , 
modifiedTime: stats.mtime , 
size: stats.size , 
type: (function(){if(stats.isFile()===true){return "File"}
                      else{return "Directory"}}})()
console.log(obj);
});

尝试 ternary 运算符

const fs = require("fs");
fs.stat("./fs1.js", function(err, stats){
var obj = {birthTime: stats.birthtime , 
modifiedTime: stats.mtime , 
size: stats.size , 
type: stats.isFile()?"File":"Directory",
console.log(obj);
});

使用这个:

type: stats.isFile() ? 'File' : 'Directory'