如何检查接收参数在javascript函数的一个用户定义对象的实例

How to check recieved parameter in javascript function an instance of user defined object?

本文关键字:实例 一个 用户 定义 函数 对象 检查 何检查 参数 javascript      更新时间:2023-09-26

我有一个javascript函数,它有一个变量'object',它可以接收两种类型的对象中的任何一种,比如x和y对象

function myFunction(object){alert(instanceof object) };

有这样的东西吗?它应该提示x或y

有这样的东西吗?它应该警告x或y

Yes:

alert(object instanceof TheConstructorYouWantToCheckAgainst);

如果我正确阅读你的问题,你的构造函数是xy(惯例是使用大写字母)。例如:

function x() {
}
function y() {
}
var o = new x();
console.log(o instanceof x); // true
console.log(o instanceof y); // false

如果你想从object中获得"x",当它通过new x创建时,你不能可靠地在ES5和之前。在ES2015(又名"ES6")及以上版本中,函数有一个name属性,可以通过各种方式设置(即使函数是用"匿名"函数表达式创建的)。因此,如果x有名称(仍然有可能没有),并且如果继承链已经正确设置,那么object.constructor.name将为您提供"x"。但我不会依赖它,因为人们在做继承链时总是把constructor搞砸。

您可以根据需要使用不同的解决方案

在下面的代码中,我使用了X对象。对于另一个 ,用Y替换X
object instanceof X;     // == true
object.constructor.name;        // == "X"
X.prototype.isPrototypeOf(object);  // == true