【问题标题】:How to convert a string parameter into Object type in JavaScript?如何在 JavaScript 中将字符串参数转换为 Object 类型?
【发布时间】:2021-08-20 20:36:47
【问题描述】:

我正在数据类型“Object”中创建一个函数, 代码:

Object.exists = function(obj){
if(typeof(obj)==="object"){
        return true;
    }else{
        return false;
    }
}

它的目的是检查一个对象是否存在。如果输入的对象存在,一切正常,但如果我尝试检查一个不存在的对象(我正在尝试开发一个函数并且目前正在检查它),它会引发错误。要检查的代码和错误消息:

Object.exists(demo); //Note: demo is not an object
//Error:
Uncaught ReferenceError: demo is not defined
    at <anonymous>:1:15

如果我尝试在引号中添加demo,那么即使我尝试添加现有对象,它也不起作用并显示错误。如果我尝试

if(typeof(obj)==="object"){
        return true;
    }else{
        return false;
    }
}

上面的代码没有函数并且对象不存在,不会抛出错误。 所以我试图锻炼我的愚蠢大脑并认为我可以使用eval(),但我不这么认为。有没有其他方法可以将参数(即使是字符串)转换为 if 语句的对象?

【问题讨论】:

  • 如果demo 标识符尚未声明Object.exists(demo) 将在评估demo 时抛出错误。为什么需要一个单独的函数?为什么不直接使用let exists = typeof demo === 'object'
  • 呃,当你说“它不存在”时,你真的是说这是一个未声明的变量吗?因为你在那里打开了一整罐蠕虫。 1. 您不能在任何地方传递未声明的变量。任何读取未声明的变量都是错误的,所以foo(undeclared) 会在调用foo 之前抛出错误。只有typeof foo 不会出现错误2。如果您需要检查未声明的变量太多 以至于需要辅助函数,那么您做错了什么。你不应该有未声明的变量。您应该确切地知道什么时候会存在。
  • @adiga,我正在创建一个库(或正在尝试),所以这种类型的函数会有所帮助。
  • @VLAZ 是的,它没有被声明,这就是为什么我需要知道如何将字符串转换为对象。
  • 我告诉你,必须这样做表明你有一个更大的问题。这里正确的解决办法是不要出现这种情况。

标签: javascript object parameters type-conversion prototype


【解决方案1】:

我刚刚找到了答案, 使用eval() 并且成功了! 代码:

Object.exists = function(obj){
    var type = eval("typeof("+obj+")");
    console.log(type);
}

当你尝试一个存在的对象时,它会记录object,但如果你尝试其他任何东西,它就会记录它的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 2021-09-23
    • 1970-01-01
    • 2018-11-12
    • 2012-09-19
    • 1970-01-01
    相关资源
    最近更新 更多