javascript - 如何在 Javascript 中检查实例的类?

标签 javascript

<分区>

Possible Duplicate:
How to get a JavaScript Object's Class?

在 Ruby 中,我可以这样做来检查实例的类:

'this is an string'.class

=>String

js中有没有类似的东西?

最佳答案

您可能指的是类型或构造函数,而不是类。类在 JavaScript 中具有不同的含义。

获取类(class):

var getClassOf = Function.prototype.call.bind(Object.prototype.toString);
getClassOf(new Date());     // => "[object Date]"
getClassOf('test string');  // => "[object String]"
getClassOf({ x: 1 });       // => "[object Object]"
getClassOf(function() { }); // => "[object Function]"

See this related MDN article.

要获取构造函数或原型(prototype),有多种方法,具体取决于您的需要。

要发现您拥有的原语类型,请使用 typeof。这是与字符串、 bool 值、数字等一起使用的最佳选择:

typeof 'test string';  // => 'string'
typeof 3;              // => 'number'
typeof false;          // => 'boolean'
typeof function() { }; // => 'function'
typeof { x: 1 };       // => 'object'
typeof undefined;      // => 'undefined'

请注意 null 在这种情况下表现得很奇怪,因为 typeof null 会给你 "object",而不是 "null ".

你也可以得到原型(prototype), Backbone 的JavaScript继承,用Object.getPrototypeOf(myObject)(或myObject.__proto__myObject.constructor.prototype 在不支持 getPrototypeOf 的某些浏览器中)。

您可以使用instanceof 测试构造函数:

new Date() instanceof Date;  // => true

您也可以合理地使用 myObject.constructor 获取构造函数,但请注意,这可以更改。要获取构造函数的名称,请使用 myObject.constructor.name

new Date().constructor.name;   // => 'Date'

关于javascript - 如何在 Javascript 中检查实例的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018759/

相关文章:

javascript - Angular2 路由守卫返回 Observable<bool>,如何处理错误

javascript - &lt;script/> 与 &lt;script&gt;&lt;/script&gt; 使用 webpack 和 Angular

javascript - 如何在呈现数据时排除特定的 JSON 对象

javascript - 移动到外部组件,直到到达具有特定属性的组件

javascript - 在 JavaScript 中生成一个两位数的正随机数

javascript - 如何为我的 SVG 路径设置动画

javascript - 如何在 Typescript 中根据参数类型声明返回类型

javascript - 如何使用 jquery 将值从输入字段传递到选择选项?

javascript - 如何在 Angular 2 Typescript 中为 FormBuilder 对象设置值

javascript - 如何在 Javascript 中格式化日期