首页 > web前端 > js教程 > 如何在 JavaScript 中获取对象类型的名称?

如何在 JavaScript 中获取对象类型的名称?

Barbara Streisand
发布: 2024-12-08 15:25:11
原创
765 人浏览过

How Can I Get the Name of an Object's Type in JavaScript?

在 JavaScript 中获取对象类型的名称

Java 提供了 class.getName() 方法来检索对象的类型,JavaScript 缺乏直接的等价物。然而,可以采用多种技术来实现类似的结果。

一种方法涉及修改对象的原型以添加 getName() 函数:

Object.prototype.getName = function() {
  var funcNameRegex = /function (.{1,})\(/;
  var results = (funcNameRegex).exec((this).constructor.toString());
  return (results && results.length > 1) ? results[1] : """";
};
登录后复制

通过此 hack,所有对象都将现在有一个 getName() 方法,它以字符串形式返回构造函数的名称。

另一个选项是使用 constructor 属性。虽然它通常适用于测试对象的类型,如下所示:

var myArray = [1,2,3];
(myArray.constructor == Array); // true
登录后复制

但是,有一些警告可能会破坏其可靠性,例如多重继承或不使用“new”关键字创建的对象。

instanceof 运算符是另一种选择,但它也有其局限性。它不适用于文字值,需要使用正确的构造函数创建对象。

另一种方法是使用 constructor.name 属性,尽管它可能不适合 IE9 或更低版本。为了兼容性,可以实现猴子补丁解决方案:

if (Function.prototype.name === undefined && Object.defineProperty !== undefined) {
  Object.defineProperty(Function.prototype, 'name', {
    get: function() {
      var funcNameRegex = /function\s([^(]{1,})\(/;
      var results = (funcNameRegex).exec((this).toString());
      return (results && results.length > 1) ? results[1].trim() : """";
    },
    set: function(value) {}
  });
}
登录后复制

最后,Object.prototype.toString可用于确定所有内置类型的类型,但它为所有内置类型返回“Object”用户定义的类型。

在选择确定 JavaScript 中对象类型的方法时,了解每种方法的注意事项和限制非常重要。

以上是如何在 JavaScript 中获取对象类型的名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板