简单方法判断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示例
Aug 29 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
May 23 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
JS绘制生成花瓣效果的方法
Aug 05 Javascript
js小数计算小数点后显示多位小数的实现方法
May 30 Javascript
详解Angular2组件之间如何通信
Jun 22 Javascript
vue复合组件实现注册表单功能
Nov 06 Javascript
小程序实现页面顶部选项卡效果
Nov 06 Javascript
原生js实现随机点名功能
Nov 05 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
解决vue单页面 回退页面 keeplive 缓存问题
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安全的URL字符串base64编码和解码
2014/06/19 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
Python缩进和冒号详解
2016/06/01 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
django中的setting最佳配置小结
2017/11/21 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
使用python实现简单五子棋游戏
2019/06/18 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
师恩难忘教学反思
2014/04/27 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
作弊检讨书
2015/01/27 职场文书
综合素质评价自我评价
2015/03/06 职场文书
名人传读书笔记
2015/06/26 职场文书
2016年寒假见闻
2015/10/10 职场文书