gpt4 book ai didi

javascript - 将 JS 对象的字符串名称转换为 JS 对象的实例

转载 作者:行者123 更新时间:2023-11-30 11:15:14 25 4
gpt4 key购买 nike

我有一个函数,它接收 2 个参数:一个变量和一个数据类型的字符串表示形式('String'、'Object' 等):

function typeChecker(variable, dataType) {
// checks type, returns true or false
}

我想将第二个参数转换为构造函数,这样这个表达式就不会抛出错误:

variable instanceof 'Date'

问题:是否可以转换其中任何一个:

'String'
'Date'
'Object'

对这些:

String
Date
Object

最佳答案

这些构造函数恰好都是全局对象的成员(浏览器中的 window 或 Node.js 中的 global),因此您可以执行以下操作之一

variable instanceof window['Date']
variable instanceof global['Date']

如果您的构造函数不作为全局对象的成员存在,您可以检查值原型(prototype)链中的任何原型(prototype)是否与 constructor 相关联,其 name 匹配所需的字符串:

function checkIfValueIsOfTypeName(value, typeName) {
while(value = Object.getPrototypeOf(value)) {
if(value.constructor && value.constructor.name === typeName) {
return true;
}
}
return false;
}

这或多或少是 instanceOf 内部操作的方式,除了 instanceOf 直接比较 constructor 和右边的值,而不是比较它的名称到一个字符串,这是你想要做的。

关于javascript - 将 JS 对象的字符串名称转换为 JS 对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51883314/

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