【问题标题】:javascript custom object typeof name [duplicate]javascript自定义对象类型名称[重复]
【发布时间】:2014-05-16 10:40:45
【问题描述】:

我想知道如何在 javascript 中获取自定义对象的名称?

var calendarDay = function (date) {
   //someCode
}

var test = new calendarDay(new Date());
console.log(typeof test); //Object

但是,如果我在 Chrome 中执行此操作:

console.log(test);

Chrome 显示我的 customObject 的确切名称。我可以在 javascript 中执行此操作吗?

【问题讨论】:

  • 你为什么需要那个?
  • @adv12,instanceof 返回 true 还是 false no?
  • @zerkms,我想确保一个函数接收正确的对象“类型”作为参数。
  • test instanceof calendarDay --- 这就是你这样做的方式,无需明确获取名称。
  • @zerkms,我知道我能做到。泰。但是,它没有回答我的问题。我能达到我的要求吗?

标签: javascript


【解决方案1】:

您正在寻找test.constructor.name。但是您应该注意,这仅适用于 named 函数,不适用于为变量分配匿名函数的函数表达式。

// named function, not function expression
function calendarDay (date) {
   //someCode
}

var test = new calendarDay(new Date());
console.log(test.constructor.name); //"calendarDay"

编辑:
正如@Bergi 所指出的,令人惊讶的是,IE 并不完全支持它。查看MDN Docs上的完整兼容性表

【讨论】:

  • 你应该提到它是非标准的,至少在一种主流浏览器中都不起作用。
  • 嘿,我试过了,但是不行?jsfiddle.net/jarnanchen/tp356
  • OP 的匿名函数根本不起作用
  • 不工作...c.constructor.name.length == 0;
  • @JrChen 它仅适用于命名函数,不适用于 var calendarDay = function() {} 等函数表达式
【解决方案2】:

不确定这是否可以帮助您。 为您的自定义函数 obj 命名。

var calendarDay = function (date) {
    this.name = 'calendarDay';
}

var test = new calendarDay(new Date());
console.log(test.name);

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2016-07-17
    • 2012-05-27
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多