我有以下javascript代码:
function testClass() {
this.SaveValue = function (value) {
var isInstance = value instanceof TestEnum;
if (!isInstance) {
return;
}
}
}
TestEnum = {
VALUE_0: 0,
VALUE_1: 1,
VALUE_2: 2
}
我通过以下方式创建此对象的实例:
$(function () {
var a = new testClass();
a.SaveValue(TestEnum.VALUE_1);
});
我要做的就是测试传递给
SaveValue
函数的值实际上是TestEnum
的类型。但是,当我运行此代码时,出现以下错误:Uncaught TypeError: Expecting a function in instanceof check, but got 1
我要这样做正确吗?我尝试了typeof,但是它只返回
number
,对我来说不是特别有用。 最佳答案
您正在将数字传递给函数
a.SaveValue(TestEnum.VALUE_1);
由于TestEnum仅仅是一个对象,并且您正在引用该对象的number属性,因此您要使用数字来调用函数。您应该改为创建一个TestEnumValue对象,并将其用于对象的属性:
JSFiddle link for below
function testClass() {
this.SaveValue = function (value) {
var isInstance = value instanceof TestEnumValue;
if (!isInstance) {
return;
}
}
}
TestEnumValue = function(arg) {
arg = arg ? arg : 0; // sensible default
this.key = 'VALUE_' + arg;
this.val = arg;
}
Level = {
NumSpiders : new TestEnumValue(0),
NumCreepers: new TestEnumValue(1),
NumZombies : new TestEnumValue(2),
NumChickens: new TestEnumValue // uses default enum value
};
$(function() {
var a = new testClass();
a.SaveValue(Level.NumSpiders);
$('#hi').text(Level.NumSpiders.key);
});
关于javascript - 变量是Enum的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13613164/