Javascript 我怎么知道我的类是否有属性

Javascript 我怎么知道我的类是否有属性,javascript,jquery,Javascript,Jquery,你好,朋友们,请问我如何知道类名是否包含属性 因为我使用的是Ajax,我收到的类名是data.className 这是我的代码: $.post(action, object, function(data){ if(data.className.prototype.hasOwnProperty(data.methodName)) console.log("the property exists") return data; }, 'json'); 我的目标:

你好,朋友们,请问我如何知道类名是否包含属性 因为我使用的是Ajax,我收到的类名是data.className

这是我的代码:

$.post(action, object, function(data){

    if(data.className.prototype.hasOwnProperty(data.methodName))
        console.log("the property exists")

    return data;
}, 'json');
我的目标:

{"className":"Quote", "methodName":"deleteQuote"}
这是我的课堂用语

class Quote{

    deleteQuote(callback){
        console.log("hello world");
    }
}

谢谢

您的代码的问题在这一部分:
data.className.prototype
。由于
data.className==“Quote”
,这相当于
“Quote”.prototype
,它将获得
字符串的原型,而不是
Quote
类的原型。因此,您希望将字符串
“Quote”
转换为名为
Quote
的类。在Javascript中可以访问由字符串命名的变量,这一点可以找到。不幸的是,这不适用于类,唯一的修复方法似乎是使用
eval
。生成的代码如下所示:

var proto=eval(data.className+“.prototype”);
if(proto.hasOwnProperty(data.methodName))
log(“属性存在”)

使用
eval
时应小心,因为这可能会导致安全问题
eval
执行作为参数传递的字符串中的任何代码。如果您确信
data.className
是有效标识符,那么这不是问题。如果没有,则应首先检查
data.className
是否为有效的JavaScript标识符。要了解如何做到这一点,您可以查看的答案。

TypeError:window[data.className]是undefined@AmineBouhaddi是的,不幸的是,我提出的解决方案实际上不起作用。我编辑了我的答案以反映这一点,并添加了一些应该可以工作的代码。首先,我非常感谢您的努力和帮助,我只想知道eval是否安全?基本上不是:@AmineBouhaddi我解释了使用eval的安全问题。这里有一个可能的解决方案不涉及eval。您可以将这些类放入映射中,并使用映射按名称引用对象。