简单方法判断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 相关文章推荐
window.open的功能全解析
Oct 10 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 Javascript
开启BootStrap学习之旅
May 04 Javascript
JS+CSS3实现超炫的散列画廊特效
Jul 16 Javascript
防止重复发送 Ajax 请求
Feb 15 Javascript
JavaScript实现随机数生成器(去重)
Oct 13 Javascript
实例分析js事件循环机制
Dec 13 Javascript
浅析Node.js非对称加密方法
Jan 29 Javascript
JavaScript的数据类型转换原则(干货)
Mar 15 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
vue中touch和click共存的解决方式
Jul 28 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将session放入memcached的设置方法
2014/02/14 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
jquery编写日期选择器
2017/03/16 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
Python实现在线程里运行scrapy的方法
2015/04/07 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
求职自荐信
2013/12/14 职场文书
银行门卫岗位职责
2013/12/29 职场文书
费用会计岗位职责
2014/01/01 职场文书
将相和教学反思
2014/02/04 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
2014年技术员工作总结
2014/11/18 职场文书
普宁寺导游词
2015/02/04 职场文书