参数类型的约束

时间:2015-11-09 11:59:14

标签: javascript

我有以下代码:

class MotherClass {
  constructor(name) {
    this.name = name;
  }
}

class ChildClass extends MotherClass {
  constructor(name, age) {
    super(name);
    this.age = age;
  }
}

function myFunction(param1) {
   //do something
}

我如何在myFunction中检查param1是一个MotherClass(或一个扩展MotherClass的类的实例)?

2 个答案:

答案 0 :(得分:2)

使用instanceof运算符

class MotherClass {
  constructor(name) {
    this.name = name;
  }
}

class ChildClass extends MotherClass {
  constructor(name, age) {
    super(name);
    this.age = age;
  }
}

function myFunction(param1) {
   //do something
   console.log(param1 instanceof MotherClass);
}

myFunction(new ChildClass("bla", "bla"));

答案 1 :(得分:1)

@iccthedral答案将满足您的需求。

另外,请注意instanceof因为他有时会产生会导致你误入歧途的结果。

埃里克·艾略特(Eric Elliot)经常谈到这个问题there。 这是一个直接从上面的链接中获取的例子。

function foo() {};
var bar = { a: "a"};
foo.prototype = bar; // Object {a: "a"}
baz = Object.create(bar); // Object {a: "a"}
baz instanceof foo // true. oops.