18

我正在寻找相当于 Ruby 的"blah".is_a?(String)Objective-C 的[@"blah" isKindOfClass:[NSString class]]

4

2 回答 2

36

你想测试一个对象是否来自一个特定的类吗?然后你想要instanceof关键字。(这不是 CoffeeScript 添加的东西;它是 JavaScript 的一部分。)CoffeeScript 类的设置是为了如果你编写

class A
class B extends A
class C extends B

那么以下是正确的:

(new A) instanceof A
(new B) instanceof B and (new B) instanceof A
(new C) instanceof C and (new C) instanceof B and (new C) instanceof A

此外,任何对象都将返回truefor instanceof Object

如果要测试对象是其实例的特定类,请使用.constructor. 例如,

(new B).constructor is B

或者如果您想使用字符串,

(new B).constructor.name is 'B'
于 2011-05-09T15:44:11.583 回答
0

创建一个类的实例对我来说感觉不对。你永远不知道,构造函数可能期望什么参数。

所以我想出的是:

class A
class B extends A

console.log B.__super__ is A.prototype# => true
于 2013-11-15T14:49:14.780 回答