`
hongtoushizi
  • 浏览: 360388 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

判断JavaScript对象为null或者属性为空

阅读更多

首先说下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对象为null或者属性为空

    null表示一个空对象指针,typeof操作会返回”object”。 一般不显式的把变量的值设置为undefined,但null相反,对于将要保存对象的变量,应明确的让该变量保存null值。 var bj; alert(bj); //"undefined" ...

    javascript学习笔记.docx

    f) 继承:只是在查询一个属性时自动发生,而不会在写属性时发生,就是说单写一个父类的属性时,JavaScript环境会为对象本身创建一个同名的属性,从此该属性就覆盖了父类中的属性。 12) 创建一个数组可用 new Array()...

    JavaScript比较两个对象是否相等的方法

    本js代码通过对js对象进行各方面的比较来判断两个对象是否相等 cmp = function( x, y ) { // If both x and y are null or undefined and exactly the same if ( x === y ) { return true; } // If they are not ...

    JS判断两个对象内容是否相等的方法示例

    我们知道,如果两个对象即使内容,JavaScript也会判断它们不相等。但是有时候,我们仅仅需要判断两个对象的内容是否相等。那么我们应该如何做到且考虑周全呢?比如说0和-0,null和undefined,是不相等的,NaN和NaN...

    JavaScript完全自学宝典 源代码

    操作系统:Windows 2003、Windows XP Professional,或者Windows 2000 开发环境:UltraEdit12.10a、eclipse-jee-europa Web浏览器:Microsoft Internet Explorer 6.0及以上版本 Web服务器:Tomcat 5.5.20及以上...

    JavaScript笔记

    |--undefined:表示声明了变量但从未赋值或者对象属性不存在 10.双等号(==)和全等号(===): |--“==”为确定两个运算数是否相等,“==”运算符会进行类型转换。转换后运算数相等就返回true,否则返回false |...

    常用js方法,当前方法数量为15个,持续更新中

    【1】删除对象中值为''或null或undefined或[]的所有属性,标准化对象 【2】无序对象根据key从小到大转换成有序数组对象 【3】通过key遍历对象,并通过最小属性和最大属性,获取COG统计信息中的最小最大值 【4】获取...

    javascript函数的解释

    31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中返回TRUE或FALSE) 32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length ...

    【JavaScript源代码】ES2020让代码更优美的运算符 (.) ().docx

     来,上代码: 我们通常获取一个对象多层的属性值时,需要进行多次的判断。如不判断,一个为空则报错,导致后面无法继续下去。 // error const firstName = message.body.user.firstName; // ok const ...

    Javascript原型链及instanceof原理详解

    javascript中的对象都有一个__proto__属性,这个是对象的隐式原型,指向该对象的父对象的原型(prototype)。显式的原型对象使用prototype,但是Object.prototype.proto=null; 判断某个对象a是否属于某个类A的实例,...

    精通javascript

    • 11.4.htm Document对象部分属性与方法的使用 • 11.5.htm HTML文档属性属性 • 11.6.htm 同时使用name和id • 11.7.htm 事件控制器的例子 • 11.8.htm JavaScript实现...

    精通JavaScript

    • 11.4.htm Document对象部分属性与方法的使用 • 11.5.htm HTML文档属性属性 • 11.6.htm 同时使用name和id • 11.7.htm 事件控制器的例子 • 11.8.htm JavaScript实现...

    javascript 易错知识点实例小结

    原理是这样的,不同的对象在底层都表示为二进制,在JavaScript中二进制前三位都为0的话会被判断为 object 类型, null 的二进制表示是全0,自然前三位也是0,所以执行 typeof 时会返回“ object ”。 对象属性的存在...

    JavaScript正则表达式验证代码(推荐)

    RegExp:是正则表达式(regular expression)的简写。 正则表达式描述了字符的模式对象。...'对不起,文本框不能为空或者为空格!');//请将“文本框”改成你需要验证的属性名称! } } //判断日期类型是否为YYY

    正则表达式

    JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp...

    大名鼎鼎SWFUpload- Flash+JS 上传

     SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。 [编辑本段]SWFUpload的主要特点  * 可以...

    107个常用javascript语句

    31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中返回TRUE或FALSE) 32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length ...

    ajaxAnywhere框架概念和使用.doc

    AjaxAnywhere使用一个名为aa.js的Javascript文件来处理客户端的全部Ajax操作,包括初始化XMLHttpRequest、获取表单内容、发送Ajax请求、执行回调函数等。aa.js也是使用AjaxAnywhere之前必须了解的,至少应该知道其...

    前端面试宝典V3.0.docx

    16、如何遍历对象的属性?(必会) 92 17、src 和 href 的区别是?(必会) 94 18、如何使用原生 JavaScript 给一个按钮绑定两个 onclick 事件?(必会) 95 19、 如何在 JavaScript 中比较两个对象?(必会) 95 ...

Global site tag (gtag.js) - Google Analytics