检查JavaScript中是否存在对象
如何在JavaScript中validation对象的存在?
以下工作:
if (!null) alert("GOT HERE");
但是这个失败了:
if (!maybeObject) alert("GOT HERE");
错误: mayObject没有被定义。
您可以安全地在未定义的variables上使用typeof
运算符。
如果已经分配了任何值,包括null,那么typeof将返回非undefined的值。 typeof总是返回一个string。
因此
if (typeof maybeObject != "undefined") { alert("GOT THERE"); }
这里有很多半真相,所以我觉得我做了一些更清楚的事情。
实际上,你不能准确地判断一个variables是否存在(除非你想把每一行都换成一个try-catch块)。
原因是Javascript有这个臭名昭着的undefined
值,这并不意味着该variables没有定义,或者它不存在undefined !== not defined
var a; alert(typeof a); // undefined (declared without a value) alert(typeof b); // undefined (not declared)
所以存在的variables和另一个不能报告你的undefined
types。
至于@凯文的误解, null == undefined
。 这是由于types的强制,这是为什么克洛克福德不断告诉每个人不确定这种事情总是使用严格的等式运算符===
来testing可能的谬误值的主要原因。 null !== undefined
给你你可能期望的。 还请注意, foo != null
可以是一种有效的方法来检查variables既不是undefined
也是null
。 当然你可以明确,因为它可能有助于可读性。
如果你限制这个问题来检查一个对象是否存在, typeof o == "object"
可能是一个好主意,除非你不考虑数组对象,因为这也会被报告为可能离开你的object
的types有点困惑。 更不用说那种types的typeof null
也会给你object
错误的object
。
对于typeof
, undefined
, null
, unknown
和其他mister,你应该小心的主要区域是主机对象。 他们不能被信任。 他们可以自由地做任何他们想要的任何肮脏的事情。 所以要小心,尽可能检查function,因为这是使用一个甚至可能不存在的function的唯一安全的方法。
您可以使用:
if (typeof objectName == 'object') { //do something }
如果这是一个全局对象,则可以使用if (!window.maybeObject)
两种方式。
typeof为局部variables
您可以使用typeoftesting本地对象:
if (object !== "undefined") {}
全局variables窗口
您可以通过检查窗口对象来testing全局对象(在全局范围中定义一个对象):
if (window.FormData) {}
你可以使用“typeof”。
if(typeof maybeObject != "undefined") alert("GOT HERE");
我以前只是做一个if(maybeObject)
作为我的javascripts中的空检查。
if(maybeObject){ alert("GOT HERE"); }
所以只有当maybeObject
– 是一个对象时,才会显示警报。 我在我的网站上有一个例子。
https://sites.google.com/site/javaerrorsandsolutions/home/javascript-dynamic-checkboxes
我刚刚从上面testing了这个types的例子,但都没有为我工作,所以我使用了这个:
btnAdd = document.getElementById("elementNotLoadedYet"); if (btnAdd != null) { btnAdd.textContent = "Some text here"; } else { alert("not detected!"); }
除了检查对象/variables的存在之外,您可能希望提供一个“最坏情况”的输出,或者至less将其陷入警报,以免引起注意。
函数的例子,检查,提供替代,并捕获错误。
function fillForm(obj) { try { var output; output = (typeof obj !== 'undefined') ? obj : ''; return (output); } catch (err) { // If an error was thrown, sent it as an alert // to help with debugging any problems alert(err.toString()); // If the obj doesn't exist or it's empty // I want to fill the form with "" return (''); } // catch End } // fillForm End
我创build这个也是因为我传递给它的对象可能是x,xm,xm [z],如果xm不存在,则typeof xm [z]会失败并显示错误。
我希望它有帮助。 (顺便说一句,我是JS的新手)
将文本框值设置为一帧,使用div alignmnt选项卡式面板embedded帧。 因此,首先,在设置我们需要的值之前,请使用以下代码检查选定的选项卡式面板框架是否可用:
Javascript代码:
///////////////////////////////////////// <script> function set_TextID() { try { if(!parent.frames["entry"]) { alert("Frame object not found"); } else { var setText=document.getElementById("formx").value; parent.frames["entry"].document.getElementById("form_id").value=setText; } if(!parent.frames["education"]) { alert("Frame object not found"); } else { var setText=document.getElementById("formx").value; parent.frames["education"].document.getElementById("form_id").value=setText; } if(!parent.frames["contact"]) { alert("Frame object not found"); } else { var setText=document.getElementById("formx").value; parent.frames["contact"].document.getElementById("form_id").value=setText; } }catch(exception){} } </script>
if (n === Object(n)) { // code }
对我来说这工作:
if(document.getElementsByClassName("classname").length != 0 ){ alert("classname exist"); }
if (maybeObject !== undefined) alert("Got here!");
认为这是最简单的
if(myobject_or_myvar) alert('it exists'); else alert("what the hell you'll talking about");
或者,你可以开始使用我的独有的exists()方法,而且能够做一些被认为不可能的事情。 即:
诸如: exists("blabla")
,甚至: exists("foreignObject.guessedProperty.guessNext.propertyNeeded")
也是可能的…