简单方法判断JavaScript对象为null或者属性为空


Posted in Javascript onSeptember 26, 2014

首先说下null与undefined区别:

对已声明但未初始化的和未声明的变量执行typeof,都返回"undefined"。

null表示一个空对象指针,typeof操作会返回"object"。

一般不显式的把变量的值设置为undefined,但null相反,对于将要保存对象的变量,应明确的让该变量保存null值。

var bj;
alert(bj); //"undefined"
bj = null;
alert(typeof bj); //"object"
alert(bj == null); //true
bj = {};
alert(bj == null); //false

下面两个函数是邓师兄给我的,感谢啊。

/*
* 检测对象是否是空对象(不包含任何可读属性)。
* 方法既检测对象本身的属性,也检测从原型继承的属性(因此没有使hasOwnProperty)。
*/
function isEmpty(obj)
{
for (var name in obj)
{
return false;
}
return true;
};

这里所说的空对象,到底是 {} 还是 null . 我写了一个测试用例。

var a = {};
a.name = 'realwall';
console.log(isEmpty(a)); //false
console.log(isEmpty({})); //true
console.log(isEmpty(null)); //true

//注意参数为null时无语法错误哦,即虽然不能对null空指针对象添加属性,但可以使用for in 语句


?
/*
* 检测对象是否是空对象(不包含任何可读属性)。
* 方法只既检测对象本身的属性,不检测从原型继承的属性。
*/
function isOwnEmpty(obj)
{
for(var name in obj)
{
if(obj.hasOwnProperty(name))
{
return false;
}
}
return true;
};

{}与null的区别:

这个东西很重要。

var a = {};
var b = null;

a.name = 'realwall';
b.name = 'jim'; //这里会报错,b为空指针对象,不能像普通对象一样直接添加属性。
b = a;
b.name = 'jim'; //此时 a 和 b 指向同一个对象。a.name, b.name 均为'jam'
Javascript 相关文章推荐
jquery 上下滚动广告
Jun 17 Javascript
Javascript 面向对象 重载
May 13 Javascript
通过url查找a元素并点击
Apr 09 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
Jul 18 Javascript
全面解析Bootstrap排版使用方法(文字样式)
Nov 30 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
Nov 11 Javascript
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
Jul 04 Javascript
React学习之JSX与react事件实例分析
Jan 06 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 Javascript
vue项目中使用多选框的实例代码
Jul 22 Javascript
jquery uploadify 在FF下无效的解决办法
Sep 26 #Javascript
jQuery判断当前点击的是第几个li的代码
Sep 26 #Javascript
javascript 自定义回调函数示例代码
Sep 26 #Javascript
jquery和js实现对div的隐藏和显示方法
Sep 26 #Javascript
jQuery对val和atrr("value")赋值的区别介绍
Sep 26 #Javascript
jquery实现一个简单好用的弹出框
Sep 26 #Javascript
php,js,css字符串截取的办法集锦
Sep 26 #Javascript
You might like
php Mysql日期和时间函数集合
2007/11/16 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
js图片预加载示例
2014/04/30 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
2014年迎新年活动方案
2014/02/19 职场文书
如何写好自荐信
2014/04/07 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
记者节感言
2015/08/03 职场文书
Win11软件图标固定到任务栏
2022/04/19 数码科技
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫