简单方法判断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'
相关推荐
-
js实现数组去重、判断数组以及对象中的内容是否相同
复制代码 代码如下: /* *数组元素去重 */ if(typeof Array.prototype.distinct != "function"){ Array.prototype.distinct = function(){ this.sort(); for(var i=0;i<this.length-1;i++){ if($.isPlainObject(this[i]) && $.isPlainObject(this[i+1])){ if(o2o(this[
-
JavaScript中判断对象类型的几种方法总结
我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串.如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在). 但 type
-
JS/Jquery判断对象为空的方法
发现了一个巧妙的实现: 需要检查一个对象(Object)是否为空,即不包含任何元素.Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair).检查一个对象是否为空,等价于检查对象中有没有键值对.写成代码,形如: if (isEmptyObject(obj)) { // obj is empty } else { // not empty } 至于 isEmptyObject 的实现,jQuery 中有一个很有想法的方式,请看代码: function i
-
JS判断浏览器之Navigator对象
The Navigator Object 导航对象 The JavaScript Navigator object contains all information about the visitor's browser. We are going to look at two properties of the Navigator object: JS导航对象包含所有有关访问这者浏览器的信息.我们将看看两个导航对象的产物: appName - holds the name of the br
-
JS判断两个对象内容是否相等的方法示例
本文实例讲述了JS判断两个对象内容是否相等的方法.分享给大家供大家参考,具体如下: 我们知道,如果两个对象即使内容,JavaScript也会判断它们不相等.但是有时候,我们仅仅需要判断两个对象的内容是否相等.那么我们应该如何做到且考虑周全呢?比如说0和-0,null和undefined,是不相等的,NaN和NaN默认是不相等的.我写了一个isEqual方法,考虑到了诸多方面,代码如下: <!DOCTYPE html> <html> <head> <meta cha
-
js中判断Object、Array、Function等引用类型对象是否相等
在迭代中,我们还要注意的是,对象或者数组中的元素可能是一个任意值--除了原始类型值.object.arrray外,这个值还可能是一个方法.一个DOM对象或者window对象,可能你已经注意到了,有部分引用类型是不能进行迭代的,需要分支判断,代码如下: 复制代码 代码如下: function compare(a,b){ var pt = /undefined|number|string|boolean/, fn = /^(function\s*)(\w*\b)/, cr = "constructo
-
Javascript中判断变量是数组还是对象(array还是object)
怎样判断一个JavaScript变量是array还是obiect? 答案: 1.如果你只是用typeof来检查该变量,不论是array还是object,都将返回'objec'. 此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0). 然而,参数对象[arguments object](传给制定函数的所有参数),也可能会适用于上述方法,技术上来说,参数对象并不是一个array. 此外,当一个对象有a.length属性的时候,这个方
-
JavaScript 判断判断某个对象是Object还是一个Array
1.typeof 操作符.对于Function, String, Number ,Undefined 等几种类型的对象来说,他完全可以胜任,但是为Array时 复制代码 代码如下: var arr=new Array("1","2","3","4","5"); alert(typeof(arr)); 你会收到一个object 的答案,有点让人失望 . 2.instanceof 操作符,JavaScript中
-
javascript检测对象中是否存在某个属性判断方法小结
检测对象中属性的存在与否可以通过几种方法来判断. 1.使用in关键字该方法可以判断对象的自有属性和继承来的属性是否存在. 复制代码 代码如下: var o={x:1}; "x" in o; //true,自有属性存在 "y" in o; //false "toString" in o; //true,是一个继承属性 2.使用对象的hasOwnProperty()方法 该方法只能判断自有属性是否存在,对于继承属性会返回false. 复制代码 代码如
-
Javascript判断对象是否相等实现代码
在做表单页面的时候,想判断2个js对象,是不是所有完全相同.这里是stackoverflow上的解决办法,在这里记录一下. 复制代码 代码如下: Object.prototype.equals = function(x) { var p; for(p in this) { if(typeof(x[p])=='undefined') {return false;} } for(p in this) { if (this[p]) { switch(typeof(this[p])) { case 'o
-
JS判断对象是否存在的10种方法总结
Javascript语言的设计不够严谨,很多地方一不小心就会出错.举例来说,请考虑以下情况.现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: 复制代码 代码如下: if (myObj不存在){ 声明myObj; } 你可能会觉得,写出这段代码很容易.但是实际上,它涉及的语法问题,远比我们想象的复杂.Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法.只有对Javascript语言的实现细节非常清楚,才可
-
js判断对象是否是某一类型
判断对象是否是某一类型 var obj = new String("我们"); alert(obj instanceof String); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
-
js中判断对象是否为空的三种实现方法
在写js脚本的时候经常遇到对象为空或者不是对象的情况,出现这种情况我们可以用if去判断它,然后去执行相应的处理方法,具体判断他们的方法有以下几种: 1.if (typeOf(x) == "undefined") 2.if (typeOf(x) != "object") 3.if(!x) 其中第三种是最简单的方法,但是第三种就不能用if(x)这种互斥的方法去判断,只能在对象前面加! java里面!x为true的时候x肯定为false了,但是这里
随机推荐
- 图解Eclipse在线安装ADT插件过程
- js检测离开或刷新页面时表单数据是否更改的方法
- CentOS6.3下安装VSFTP服务
- 浅谈iOS关于头文件的导入问题
- Oracle解锁的方式介绍
- JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
- jQuery中的RadioButton,input,CheckBox取值赋值实现代码
- go语言通过zlib压缩数据的方法
- C# 连接SQL数据库的方法及常用连接字符串
- C#实现移除字符串末尾指定字符的方法
- 利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法分享
- asp中COM组件中如何连接数据库的代码
- C++常见错误中英文对照表
- 深入理解Node.js中通用基础设计模式
- Asp.Net 和 AJAX.Net 的区别第1/2页
- JavaScript上传文件时不用刷新页面方法总结(推荐)
- 给blog添加效果(计数器、天气预报、精美flash时钟、跟随鼠标的萤火虫、跟随鼠标的文字、状态栏文本、副标
- 浅析C++中单链表的增、删、改、减
- Android中ScrollView嵌套GridView的解决办法
- java将数据写入内存,磁盘的方法