js如何判断一个对象{}是否为空对象,没有任何属性
前段时间用js写了一个类似"angularjs"用于数据绑定的东西,功能是比较简单了,
通常应该传进来的是一个ArrayList JSON对象数组,
但有时候通过AJAX方法调用返回的是一个JSON对象,而不是数组!
为了兼容这种情况使用了以下代码:
if (typeof model.rows === "object" && !(model.rows instanceof Array)){
model.rows = [model.rows];
}
这段代码在后来使用过程中发现了一个Bug,就是当
model.rows = {};
时,依然把它当作一个有效的对象来处理,进行数据绑定,可想而知,所有数据都是空的。
解决方案:
那么怎么解决这个问题呢?
第一习惯首先是搜索一下,但得到的结果都是DOM相关的,差强人意!
这时想起之前写过遍历JS对象属性的方法,这里可以用上了!
代码如下:
if (typeof model.rows === "object" && !(model.rows instanceof Array)){
var hasProp = false;
for (var prop in model.rows){
hasProp = true;
break;
}
if (hasProp){
model.rows = [model.rows];
}else{
throw "model.rows is empty object";
return false;
}
}
代码很简单,就不写注释了。
分享到:
相关推荐
上述代码首先获取了用户选择的第一个文件,然后通过比较其size属性是否为0来判断文件是否为空。如果size为0,则表示文件为空;否则,文件含有数据,非空。 然而,需要注意的是,这种方式并不能确保100%的准确性,...
"js判断一个属性是否为空1"这个标题暗示我们将讨论如何检查对象的某个特定属性是否存在且其值是否为空。`typeof this.flag === 'undefined'`是用于检测属性`flag`是否存在并判断其是否未定义的一种方法。接下来,...
为了更精确地判断一个对象是否为空,可以结合使用`typeof`和检查对象的属性是否存在。例如,你可以检查对象的`length`属性(如果它是一个数组)或使用`Object.keys()`来获取对象的所有属性,并检查其长度是否为0: `...
在JavaScript(JS)中,对象是一种复杂的数据结构,...总的来说,JavaScript对象属性排序是一个需要谨慎处理的问题,因为它们的天然无序性。理解这些方法和原理,可以帮助我们在开发中更好地控制和处理对象的属性顺序。
微信小程序两种为对象属性赋值的方式 对应config.wxml 阶段一 对应config.js data:{ //定义对象 configs:{} } //方式一 switchChange:function(e){ //为对象的某一属性赋值 configs.config1={ }; ...
### JavaScript对象属性详解 在深入探讨JavaScript对象属性之前,我们首先需要理解JavaScript是一种广泛应用于网页开发的编程语言,它能够使网页变得动态、交互性更强。JavaScript中的对象是其核心特性之一,几乎...
本文将详细介绍几种判断JavaScript对象是否为空的简单方法,并对每种方法的适用场景和效率进行分析。 首先,我们需要明确什么是“空对象”。在这里,我们定义一个空对象为没有任何自有属性(不包括原型链上的属性)...
在JavaScript中,使用new关键字创建一个新对象的过程是一个涉及多个步骤的机制,其目的是构造一个新的实例对象。这个过程涉及几个关键的内部操作,理解它们有助于更好地掌握JavaScript的原型继承和面向对象编程。 1...
总结来说,判断一个对象是否含有某个属性,可以使用`in`关键字、`hasOwnProperty`方法或与`undefined`比较的方式。`in`关键字检查对象的自有属性以及继承的属性,`hasOwnProperty`专门检查对象自身拥有的属性,而...
尽管数组在概念上与对象不同,但在JavaScript中,数组也被视为一种特殊的对象,其索引被视为属性。 1. 获取对象的键(keys)和值(values) 在JavaScript中,我们可以使用`for...in`循环遍历对象的所有可枚举属性...
未声明的变量如果使用delete操作符,也会返回true,因为JavaScript引擎会将其视为一个属性删除操作。 2. 函数:函数在JavaScript中也是一种对象,因此可以通过delete操作符来删除。如果是通过var、let、const声明的...
即可以通过返回数组的长度来判断是否为空对象,若为空对象,该数组长度为0。例: let person={name:张三,age:20} if (Object.keys(person).length == 0) { //数据为空 return true }else{ return false } 二、...
而'toString'虽然是大多数JavaScript对象都会继承的一个方法,但它并不属于obj对象自身的属性,因此hasOwnProperty返回false。 值得一提的是,虽然in运算符能够检测到原型链上的属性,但在for-in循环中,这些属性...
虽然不太常用,但我们的确可以给对象添加以数字为属性名的属性: 代码如下: var obj = {}; obj[0] = 1; obj[1] = 2; 这个对象并不是数组类型,那有没有办法把它转换为数组类型呢?jQuery代码中采用了Array.prototype...
这个函数首先检查目标是否为对象,如果不是,就直接返回第一个源对象。接着,遍历每一个源对象的属性,对于每个属性,如果其值也是对象,则递归调用`deeplyAssign`函数;否则,直接将属性值复制到目标对象上。这个...
在JavaScript编程中,有时候...总结来说,检查一个JavaScript对象是否为空是一个涉及到对象属性遍历和特性判断的问题。在处理对象属性时,我们应该考虑到不同方法的适用场景以及它们的局限性,以确保得到正确的结果。
`hasOwnProperty()`是JavaScript对象的一个内置方法,它用于判断对象是否具有指定的自有属性,不考虑继承属性。例如: ```javascript var o = {x: 1}; o.hasOwnProperty("x"); // true,自有属性中有x o....
- `isOwnEmpty(obj)`:检测一个对象是否为空对象(不包含任何可读属性),且只检测对象本身的属性,不包括从原型链继承的属性。 ```javascript function isOwnEmpty(obj) { for (var name in obj) { if (obj....
但这种方法有一个限制,即当属性值可能为`undefined`时,这种判断会失效,因为无法区分属性不存在和属性值为`undefined`的情况。 2. **in 运算符** `in`运算符可以检查指定的属性是否在对象或其原型链上存在。例如...