【发布时间】: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