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

http://blog.csdn.net/yiluoak_47/article/details/7766760

首先说下null与undefined区别:

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

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

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

 1 var bj;
 2 alert(bj);
 3 //"undefined"
 4 bj = null;
 6 alert(typeof bj); //"object"
 8 alert(bj == null);  //true
11 bj = {};
13 alert(bj == null);  //false

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

 1 /*
 2  *
 3  检测对象是否是空对象(不包含任何可读属性)。
 4  *
 5  方法既检测对象本身的属性,也检测从原型继承的属性(因此没有使hasOwnProperty)。
 6  */
 7 function isEmpty(obj)
 8 {
 9     for (var name in obj)
11     {
12         return false;
13     }
14     return true;
15 };

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

 1 var a = {};
 3 a.name = ‘realwall‘;
 5 console.log(isEmpty(a)); //false
 7 console.log(isEmpty({})); //true
 9 console.log(isEmpty(null)); //true
 //注意参数为null时无语法错误哦,即虽然不能对null空指针对象添加属性,但可以使用forin 语句。
14   
15 ?
16 /*
17  *
18  检测对象是否是空对象(不包含任何可读属性)。
19  *
20  方法只既检测对象本身的属性,不检测从原型继承的属性。
21  */
22 function isOwnEmpty(obj)
23 {
24     for(var name
25 in obj)
26     {
27         if(obj.hasOwnProperty(name))
28         {
29             return false;
30         }
31     }
32     return true;
33 };
34
35 {}与null的区别:
36 这个东西很重要。
37 ?
38 var a = {};
40 var b = null;
42
43 a.name = ‘realwall‘;
45 b.name = ‘jim‘;
47 //这里会报错,b为空指针对象,不能像普通对象一样直接添加属性。
48 b = a;
50 b.nameB= ‘jim‘;
52 //此时 a 和 b 指向同一个对象。a.name, b.name 均为‘jam‘
时间: 2024-12-20 06:04:38

判断JavaScript对象为null或者属性为空的相关文章

如何判断Javascript对象是否存在

Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: if (myObj不存在){ 声明myObj; } 你可能会觉得,写出这段代码很容易.但是实际上,它涉及的语法问题,远比我们想象的复杂.Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法.只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别

深入理解javascript对象系列第二篇——属性操作

× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对象系列的第二篇——属性操作 属性查询 属性查询一般有两种方法,包括点运算符和方括号运算符 var o = { p: 'Hello World' }; o.p // "Hello World" o['p'] // "Hello World" [注意]变量中可以存在中文,因

判断Javascript对象是否为空

判断普通javascript对象是否为空(含有可枚举的属性,自有的.继承的都可以),可使用jQuery 3.2.1版的isEmptyObject()方法: isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; } As of jQuery 1.4 this method checks both properties on the object itself and

删除一个Javascript对象中的一个属性

一个Javascript对象如下 var myObject = { "ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*" }; 想要达到的目的如下 var myObject = { "ircEvent": "PRIVMSG", "method": &qu

对JavaScript对象数组按指定属性和排序方向进行排序

引子 在以数据为中心的信息系统中,以表格形式展示数据是在常见不过的方式了.对数据进行排序是必不可少的功能.排序可以分为按单个字段排序和按多个字段不同排序方向排序.单字段排序局限性较大,不能满足用户对数据的关注点变化的需求,而多字段排序就可以较好的弥补这个缺陷. 多字段排序,实现的方式从大的层面上可以分为后端实现和前端实现. 后端排序 后端实现排序可以在数据库层面实现或者在应用程序层面实现. 数据库层面实现多字段排序非常简单,使用SQL的排序指令“Order By”即可——Order By fie

JavaScript对象中的constructor属性

constructor属性始终指向创建当前对象的构造函数. 比如下面的例子: 1 // 等价于 var foo = new Array(1, 56, 34, 12); 2 var arr = [1, 56, 34, 12]; 3 console.log(arr.constructor === Array); // true 4 // 等价于 var foo = new Function(); 5 var Foo = function() { }; 6 console.log(Foo.constr

判断JS对象是否拥有某属性

可以用 in操作符 和 对象的 hasOwnProperty 操作符 举例 "name" in Object Object.hasOwnProperty("name") 有个公共的方法 function hasPrototype(object,name){ return !object.hasOwnProperty(name)&&(name in object);}

判断对象是否有某个属性

/*下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同.*/ // 对象的写法 var myObject = { "mm": "m1", "height": 1, "width": 1 }; if(myObject["mm"]){ console.log(myObject["mm"]); // m1 } //最开始报错:mm is not defined

javascript 对象(四)

一.对象概述 对象中包含一系列的属性,这些属性是无序的.每个属性都有一个字符串key和对应的value. var obj={x:1,y:2}; obj.x; obj.y; 1.为什么属性的key必须是字符串 重点: 可见,字符串的1和数字1访问的都是同一个属性 不管把空对象作为一个key,还是用带有x属性的对象作为key,实际上javascript都会把它转化为字符串,会toString()一下再去处理.所以最终依然指向同样一个属性. 2.对象结构 1.对象属性的结构 对象的属性可以动态添加和删