js 判断是否是空对象
主要思路
我们要考虑到的主要有:js原生对象,宿主对象(浏览器上面的)。
首先对于宿主对象
主要判断是DOM 对象 和是否是window 对象
是否是DOM对象 value.nodeType 是否存在。
是否是window 对象,value != null && value === value.window;
对于这两种肯定不是空对象。
- if(value.nodeType || isWindow(value)){
- return false;
- }
对于js原生对象
是否本身返回就是false 对于自身返回false 的有 'false','null' ,' "" ','undefined','NaN', '0' 这6中情况
这些显然不能作为空对象。
然后判断是否是一个对象 使用 Object.prototype.toString.call(value) === '[object Object]'; 简称为 isObject
还有一种判断,判断是否拥有 hasOwnPrototype 方法。
- if(!value || !isObject(value) || !value.hasOwnPrototype){
- return false;
- }
如果都不满足这些情况的话,
需要处理 是否拥有自身属性,
- for(var key in value){
- if(value.hasOwnPrototype(key)){
- return false;
- }
- }
完整代码:
- function isEmptyObject(value){
- if(value.nodeType || isWindow(value)){
- return false;
- }
- if(!value || !isObject(value) || !value.hasOwnPrototype){
- return false;
- }
- for(var key in value){
- if(value.hasOwnPrototype(key)){
- return false;
- }
- }
- return true;
- }
js 判断是否是空对象的更多相关文章
- js 判断是否为空对象、空数组
当需要判断参数是否为空时,总希望 js 能够提供原生的判断方法,可惜并没有,只能自己封装了. function isEmpty(obj) { // 检验 undefined 和 null if(!ob ...
- js判断是否为空和typeof的用法
(1)typeof作用用于查看数据类型 (2)typeof用法typeof 返回值类型有number, string, boolean, function, undefined, objectPS:在 ...
- js判断是否为空火undefined是否给undefined加引号
js判断是否为空为undefined如果判断的是类型则用typeof(),如果其本身就是“undefind”字符窜,则不能这样判断, 这样typeof之后是字符串类型就判断不出来了,这是需要去掉typ ...
- JS判断不能为空实例代码
JS判断不能为空实例代码.分享在此. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " ...
- JS判断内容为空方法总结
HTML代码: 用户名:<input type="text" id="username"> <p style="color:red& ...
- js判断是否为空
http://dushanggaolou.iteye.com/blog/1293803 1.<input type="hidden" id="key" n ...
- js 判断空数组,空对象!
var attr1 = [ ]; var obj1 = { }; console.log(isEmpty(attr1)); console.log(isEmpty(obj1)); function i ...
- 关于如何利用原生js动态给一个空对象添加属性以及属性值
首先,回忆一下,访问对象属性一共有两种方法:点获取法和方括号获取法.而我们最常用的就是点获取法了.但是当我们遇到需要给对象动态添加属性和属性值时,点获取法好像就不太好用了,尤其是我们不知道属性名的时候 ...
- JS判断数组中的对象的每一个值不能为空
方法一:使用every()函数,此函数不怎么常用,想要了解更多请自查 //表格 evaluateData为表格的数据 <el-table id="out-table3" :d ...
随机推荐
- redis实现秒杀demo
代码 package com.prosay.redis; import java.util.List; import redis.clients.jedis.Jedis; import redis.c ...
- 新闻编辑室第一季/全集The Newsroom迅雷下载
第一季 The Newsroom Season 1 (2012)看点:频出佳剧的HBO这次将目光对准了新闻间这个话题多,故事更多的“小”地方.该剧讲述的是一家虚构的有线电视新闻网ACN的故事,由阿伦· ...
- Curl操作Elasticsearch的常用方法
Elasticsearch对于文档操作,提供了以下几种API,本文就说明如何使用curl方式来调用这些API. API种类 单文档操作API 1.* Index API 索引文档 * 为文档创建索引 ...
- C# ApartmentState 枚举,指定线程单元状态
1.ApartmentState 指定的单元状态 Thread. 命名空间: System.Threading程序集: mscorlib(位于 mscorlib.dll) 成员 成员 ...
- Java反编译工具Jad详解
做项目过程中需要反编译一个jar包,于是作了一些学习,记录下来. Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使 ...
- Apache Jmeter 教程
Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadR ...
- NVelocity语法常用指令
对变量的引用:$ [ ! ][ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ][ } ]. 在NVelocity中,对变量的引用都是以$开头加上变量名称.当使用 ...
- 数学图形(1.48)Cranioid curve头颅线
这是一种形似乎头颅的曲线.这种曲线让我想起读研的时候,搞的医学图像三维可视化.那时的原始数据为脑部CT图像.而三维重建中有一种方式是面绘制,是将每一幅CT的颅骨轮廓提取出来,然后一层层地罗列在一起,生 ...
- 查看JVM统计信息【转】
查看JVM统计信息 [myname@name ~]$ jstat -gcutil 17421 Warning: Unresolved Symbol: sun.gc.generation.2.space ...
- dbcp、c3p0、jdbc常用连接配置
dbcp连接数据库配置 比较常见 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSo ...