javascript判断对象是否为domElement

我们在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法。

要判断一个对象是否DOM对象,首先想到的无非就是它是否具有DOM对象的各种属性或特征,比如是否有nodeType属性,有tagName属性,等等。判断的特征越多,也就越可靠,因为毕竟我们自定义的js对象也可以有那些属性。还有其他方法吗?

在DOM Level2标准中定义了一个HTMLElement对象,它规定所有的DOM对象都是HTMLElement的实例,所以我们可以利用这点来判断一个对象是不是DOM对象:如果该对象是HTMLElement的实例,则它肯定是一个DOM对象。在不支持HTMLElement的浏览器中我们则还是使用特征检测法。

<script type="text/javascript">
//首先要对HTMLElement进行类型检查,因为即使在支持HTMLElement
//的浏览器中,类型却是有差别的,在Chrome,Opera中HTMLElement的
//类型为function,此时就不能用它来判断了
var isDOM = ( typeof HTMLElement === ‘object‘ ) ?
function(obj){
return obj instanceof HTMLElement;
} :
function(obj){
return obj && typeof obj === ‘object‘ && (obj.nodeType === 1 || obj.nodeType === 9) && typeof obj.nodeName === ‘string‘;
}
</script>

改写

function isElement(obj){
return (typeof HTMLElement === ‘object‘)
?(obj instanceof HTMLElement)
:!!(obj && typeof obj === ‘object‘ && (obj.nodeType === 1 || obj.nodeType === 9) && typeof obj.nodeName === ‘string‘);
}

原文地址:https://www.cnblogs.com/7qin/p/10630088.html

时间: 2024-08-29 10:59:56

javascript判断对象是否为domElement的相关文章

javascript 判断对象类型

typeof typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果. 此表总结了typeof所有可能的返回值: 操作数类型 返回值 undefined "undefined" Null "object" Boolean "boolean" Number "number" String "string" 函数对象 "function" E4X XM

Javascript 判断对象是否相等

在Javascript中相等运算包括"==","==="全等,两者不同之处,不必多数,本篇文章我们将来讲述如何判断两个对象是否相等? 你可能会认为,如果两个对象有相同的属性,以及它们的属性有相同的值,那么这两个对象就相等.那么下面我们通过一个实例来论证下: var obj1 = { name: "Benjamin", sex : "male" } var obj2 = { name: "Benjamin",

JavaScript判断对象类型及节点类型、节点名称和节点值

一.JavaScript判断对象类型 1.可以使用typeof函数判断对象类型 1 function checkObject1(){ 2 var str="str"; 3 console.log(typeof(str))//输出"string"; 4 console.log(typeof(str)=="string")//输出true; 5 }? 2.使用对象的构造函数属性(constructor),来判断对象的类型: 1 function ch

javascript判断对象是否为空

JavaScript是一种弱类型的脚本语言,在开发中经常会因为语法不严谨而出现一些错误. 下面的方法是判断对象是否为空的方法,包括对 null.undefind.空字符等类型. //判断是否为空 为空返回 false 不为空返回true function isNotEmpty(_value) { return ((_value === undefined || _value === null || _value === "" || _value === "undefined&

[转] javascript 判断对象是否存在的10种方法总结

[From] http://www.jb51.net/article/44726.htm Javascript语言的设计不够严谨,很多地方一不小心就会出错.举例来说,请考虑以下情况.现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: 复制代码代码如下: if (myObj不存在){ 声明myObj; } 你可能会觉得,写出这段代码很容易.但是实际上,它涉及的语法问题,远比我们想象的复杂.Juriy Zaytsev指出,判断一个Javascrip

javascript 判断对象的内置类型

判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法.在toString方法被调用时,会执行下面的操作步骤:1. 获取this对象的[[Class]]属性的值.2. 计算出三个字符串"[object ", 第一步的操作结果Result(1), 以及 "]"连接后的新字符串.3. 返回第二步的操作结果Result(2).Object.prototype.toString方法返回的字符串,去掉前面固定的"[

Javascript判断对象是否为数组,并且数组元素对象

常规的有两种方式,第一种是jquery自带的方法,第二个是js原始方法 1. $.isArray(obj) 2. obj instanceof Array 实测发现两者确实可以判断对象是否为数组,但是只能判断简单对象的对象,对于复杂的jquery对象的数组却返回false,要判断jquery对象数组,我目前的做法是 typeof(obj) == "object" && obj.length > 1 //数组属于对象,并且数组length都大于1 另外jQuery封

javascript 判断对象是否为空,字符串是否为空

//判断对象是否为空 //console.log(isEmptyObject());           //true //console.log(isEmptyObject({}));         //true //console.log(isEmptyObject(null));       //true //console.log(isEmptyObject(23));         //true //console.log(isEmptyObject({"te": 2})

JavaScript 判断对象中是否有某属性

因为后端返回一个对象后,这个对象经常会出现缺少属性的情况 一个解决方法就是接受到数据后判断对象中是否有该属性,无的话加上属性和默认值 那么如何判断是否有该属性呢: test.hasOwnProperty('name') //true 自身属性 test.hasOwnProperty('age') //false 不存在 test.hasOwnProperty('toString') //false 原型链上属性 使用hasOwnProperty()就很容易知道了. 原文地址:https://ww