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;
}
}

代码非常easy,就不写凝视了。

js怎样推断一个对象{}是否为空对象,没有不论什么属性的更多相关文章

  1. js判断一个对象{}是否为空对象,没有任何属性

    // js如何判断一个对象{}是否为空对象,没有任何属性 if (typeof model.rows === "object" && !(model.rows in ...

  2. JS如何判断一个对象是否为空、是否有某个属性

    一.js判断一个对象是否为空 方法一: let obj1 = {} let obj2 = {a:1} function empty(obj){ for (let key in obj){ return ...

  3. [转]JS如何判断一个对象是否为空、是否有某个属性

    原文地址:https://www.cnblogs.com/crackedlove/p/10039105.html 一.js判断一个对象是否为空 方法一: let obj1 = {} let obj2 ...

  4. js/jquery判断一个对象是否为空

    一.js判断一个对象是否为空对象 1)通过JSON自带的.stringify方法来判断 //JSON自带的stringify方法,将json转成json字符串 var c = {}; if(JSON. ...

  5. JS心得——判断一个对象是否为空

    判断一个对象是否为空对象,本文给出三种判断方法: 最常见的思路,for...in...遍历属性,为真则为"非空数组":否则为"空数组" 2.通过JSON自带的. ...

  6. JavaScript 判断一个对象{}是否为空对象的简单方法

    第一种: function isEmptyObject(obj) { for (var key in obj) { //返回false,不为空对象 return false; } return tru ...

  7. 《JS权威指南学习总结--6.8对象的三个属性》

    内容要点: 每一个对象都有与之相关的原型(prototype).类(class)和可扩展性 一.原型属性 1.对象的原型属性是用来继承属性的,这个属性是如此重要,以至于我们经常把 "0的原型 ...

  8. JS怎么判断一个对象是否为空

    昨天面试的时候被问到的问题.只怪自己根基不牢,没有回答好 甚至说出了“判断这个obj是否和{}相等”这样鱼蠢的答案(/(ㄒoㄒ)/~~)引用类型怎么可以直接判断==或者===呢?! 今天中秋佳节,宝宝 ...

  9. jquery判断是否是空对象 不含任何属性

    code function isEmptyObject(e) { var t; for (t in e) return !1; return !0 }

随机推荐

  1. SVN的switch命令

    语法就不说了,文档有的是,主要是两个常用的用法: . 切换资源库(svn sw --relocate) [plain] view plaincopy svn sw --relocate <fro ...

  2. Algorithm Part I:Priority Queues

    1.binary heap实现 BinaryHeap.h #ifndef BINARYHEAP_H #define BINARYHEAP_H class BinaryHeap { public: Bi ...

  3. hdu 4908 BestCoder Sequence 发现M中值是字符串数, 需要预处理

    BestCoder Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. mongoDB 批量更改数据,某个字段值等于另一个字段值

    由于mongodb数据库类似js的写法,所以即使数据库中新的列不存在也会自动创建 db.hospital.find().forEach( function(item){ db.hospital.upd ...

  5. Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析

    [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setCont ...

  6. abstract修饰方法总结

    abstract这种方法修饰,主要用在抽象类和抽象方法. 抽象的类是不可实例化的比如 public abstract class Test{ } 他能够含有抽象的方法 public abstract ...

  7. UltraEdit-32 温馨提示:右协会,取消 bak文件

    1.最近安装UltraEdit-32 无权协会,能够 高级 ->组态 ->文件关联 在 检查 继承到资源管理器 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...

  8. leetCode Min Stack解决共享

    原标题:https://oj.leetcode.com/problems/min-stack/ Design a stack that supports push, pop, top, and ret ...

  9. 【iOS开发-22】navigationBar导航栏,navigationItem建立:获取导航栏中的基本文本和button以及各种跳跃

    (1)navigationBar导航栏可以被看作是self.navigationController一个属性导航控制器,它可以由点直接表示self.navigationController.navig ...

  10. hdu 2074 堆放篮 好开心图纸标题

    堆放篮 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...