gpt4 book ai didi

javascript - 我怎么知道我的类(class)是否有属性(property)

转载 作者:行者123 更新时间:2023-12-02 23:33:55 24 4
gpt4 key购买 nike

你好 friend ,请问我如何知道 className 名称是否包含属性因为我使用的是 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,它将获取 String 类的原型(prototype)而不是 Quote 类。因此,您希望将字符串 "Quote" 转换为恰好名为 Quote 的类。在 Javascript 中可以访问由字符串命名的变量,如 here 所示。 。不幸的是,这不适用于类,唯一的修复似乎是使用eval。结果代码如下所示:

var proto = eval(data.className+".prototype");
if(proto.hasOwnProperty(data.methodName))
console.log("the property exists")

使用eval时应该小心,因为它可能会导致安全问题。 eval 执行作为参数传递的字符串中的任何代码。如果您确定 data.className 是有效的标识符,那么这不是问题。如果不这样做,您应该首先检查 data.className 是否是有效的 JavaScript 标识符。具体如何操作,可以查看this question的答案.

关于javascript - 我怎么知道我的类(class)是否有属性(property),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56367888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com