如何检查接收参数在javascript函数的一个用户定义对象的实例
How to check recieved parameter in javascript function an instance of user defined object?
我有一个javascript函数,它有一个变量'object',它可以接收两种类型的对象中的任何一种,比如x和y对象
function myFunction(object){alert(instanceof object) };
有这样的东西吗?它应该提示x或y
有这样的东西吗?它应该警告x或y
Yes:
alert(object instanceof TheConstructorYouWantToCheckAgainst);
如果我正确阅读你的问题,你的构造函数是x
和y
(惯例是使用大写字母)。例如:
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替换Xobject instanceof X; // == true
object.constructor.name; // == "X"
X.prototype.isPrototypeOf(object); // == true
相关文章:
- fluxxor向一个flux实例添加一组以上的操作
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- 在Javascript中对类的每个实例调用一个方法
- 代码挑战:创建一个跟踪对象实例总数的类Foo
- 有可能得到一个大整数实例的自然日志吗
- 如何在另一个组件中获取指令/组件实例
- 有没有办法用客户端的javascript生成一个AmazonEC2实例
- jQuery"焦点”;在一个实例中有效,但在其他实例中无效
- 用javascript创建另一个对象的实例
- 如何从一个友好的iframe中获取iframe实例
- 当与另一个实例进行比较时,我的类实例如何隐式返回数字
- 为什么可以't我使用成员方法初始化一个实例
- 选择多个实例中的第一个
- 如何使用 JavaScript 正则表达式搜索除一个实例之外的所有内容
- 创建一个类,该类使用es6类语法将Function对象创建为实例
- 构造一个 DOMTokenList/DOMSettableTokenList 实例
- 挖空视图模型函数仅影响最后一个实例
- 插件总是只得到最后一个实例,如何让它适用于多个元素
- jstree 是空白的,并且在实例化后有一个空的
- Vuejs:您正在装载一个带有模板的实例以`<正文>`