JavaScript 中判断 {}是空对象
Javascript 中判断空对象
简介:在 JavaScript 判断字符串是否是一个空字符串 可以 !"" 返回 true 来判断, 要是判断 {} 是否是空对象,也用 !{} 来判断的 得到的结果是 false, !{name: ''} 的返回结果也是 false。那么这肯定是无法判断了。那么在JavaScript 中与没有其他方法可以来判断呢?让我们看看下面的方法。
- 首先我们先定义两个对象,一个没有属性,一个存在属性
var obj = {}
var obj2 = {name: '123'}
方法一 JSON.stringify()
function isEmptyObject(obj) {
return JSON.stringify(obj) === '{}'
}
console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false
方法二 Object.getOwnPropertyNames()
- getOwnPropertyNames() 方法会获取对象中的属性名,存到一个数组中返回。
- 我们可以通过判断数组长度是否为 0 来判断
function isEmptyObject(obj) {
return Object.getOwnPropertyNames(obj).length === 0
}
console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false
方法三 Object.keys()
- keys() 方法是ES6 中新增方法,作用和 getOwnPropertyNames() 形同。也会返回一个存储属性名的一个数组
function isEmptyObject(obj) {
return Object.keys(obj).length === 0
}
console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false
方法四 forin
- 通过forin 方法判断是否存在 属性,存在放回 false 不存在 返回true
function isEmptyObject(obj) {
for (var key in obj) {
return false;
}
return true;
}
console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false
方法五 Reflect.ownKeys()
- Reflect.ownKeys() 也是返回一个数组,可以 解决 Symbol() 作为 key 时的尴尬
var symbal = Symbal();
var bb = {};
bb[symbal] = 'Symbal';
function isEmptyObject(obj) {
return Reflect.ownKeys(obj).lenght === 0;
}
console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false
console.log(isEmptyObject(bb)) // false Reflect.ownKeys(bb) 返回 [Symbol()]
JavaScript 中判断 {}是空对象的更多相关文章
- Java中判断非空对象.
Java中经常会遇到判断非空的时候. 有的时候判断了非空但是还是报空指针,为什么.? 判断的时候一般都会判断两次.类似于: Org o = new Org(); if ( o.getId()!=nul ...
- JavaScript中判断对象是否属于Array类型的4种方法及其背后的原理与局限性
前言 毫无疑问,Array.isArray是现如今JavaScript中判断对象是否属于Array类型的首选,但是我认为了解本文其余的方法及其背后的原理与局限性也是很有必要的,因为在JavaScrip ...
- JavaScript中判断为整数的多种方式
之前记录过JavaScript中判断为数字类型的多种方式,这篇看看如何判断为整数类型(Integer). JavaScript中不区分整数和浮点数,所有数字内部都采用64位浮点格式表示,和Java的d ...
- JavaScript中判断变量类型最简洁的实现方法以及自动类型转换(#################################)
这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短.最简洁的实现方法,需要的朋友可以参考下 我们知道JavaScript提供了type ...
- Javascript中判断数组的正确姿势
在 Javascript 中,如何判断一个变量是否是数组? 最好的方式是用 ES5 提供的 Array.isArray() 方法(毕竟原生的才是最屌的): var a = [0, 1, 2]; con ...
- javascript中的内置对象
2015.12.1 javascript中的内置对象 复习: 1.js中的内置函数 alert prompt write parseInt parseFloat eval isNaN document ...
- (转载)JavaScript中的Window窗口对象
(转载)http://www.ijavascript.cn/jiaocheng/javascript-window-65.html 例子: <html> <head> < ...
- Java与JavaScript中判断两字符串是否相等的区别
JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...
- javascript中遇到的字符串对象处理
在javascript中对参数处理: 1 <script> 2 function getParam() 3 { 4 urlInfo=window.location.href; //获取当前 ...
- JavaScript中判断整字类型最简洁的实现方法
这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短.最简洁的实现方法,需要的朋友可以参考下 我们知道JavaScript提供了type ...
随机推荐
- Serverless 极致弹性解构在线游戏行业痛点
简介: 本文将通过剖析一个个具体的场景案例,以期望给相关的游戏开发同学带来共鸣,同时也希望能给非游戏行业的同学带来一些启发. 一.前言 1. 游戏客户上云关注点 游戏行业是一个富有创意又竞争激烈的市场 ...
- 当微服务遇上 Serverless | 微服务容器化最短路径,微服务 on Serverless 最佳实践
简介: 阿里云Serverless应用引擎(SAE)初衷是让客户不改任何代码,不改变应用部署方式,就可以享受到微服务+K8s+Serverless的完整体验,开箱即用免运维. 前言 微服务作为一种更 ...
- [GPT] php 报错 Unsupported operand types
Unsupported operand types 这个错误通常发生在使用了不支持的操作数类型时.例如,当您尝试对两个不同类型的值执行算术运算时,就会出现这个错误. 例如,如果您尝试将字符串与数字相加 ...
- 如何对一个新的 VSCode 配置 LaTeX
texlive 的安装件参考资料 [1]. 往 VSCode 里面装 LaTeX Workshop 插件,也可以直接搜 James-Yu.latex-workshop. Ctrl+Shift+P 打开 ...
- 微分流形Loring Tu 习题21.2解答
今天的作业,随手写到博客吧. \(Proof.\)对于任意的\(p \in M\),有p附近的坐标卡\((U,x^{1},\ldots,x^{n})\), 由引理\(21.4\),$$dx^{1}\w ...
- Blazor/Hybird 触屏下单程序调优笔记
环境 Blazor Net8.0 + FreeSql + Bootstrap Blazor 组件 以下都是自己瞎琢磨的和官网资料搬运,肯定有不少错漏和不合理的地方,非常希望各位大佬评论区给我建议和意见 ...
- sh角本操作数据库
#!/bin/bash HOST="127.0.0.1" PORT="3306" USERNAME="root" PASSWORD=&quo ...
- uniAPP Android平台完整更新与热更新
一.概述 1.uni-app打包成apk或wgt文件,使用plus.runtime.getProperty方法获取本地应用资源版本号.2.调用后端接口,拿到与后端规定好的版本号,与前面获取的版本号进行 ...
- C++ 类的继承(Inheritance)
一.继承(Inheritance) C++有一个很好的性质称为inheritance(继承),就是声明一个class(derived class),把另一个或多个class(base class)的所 ...
- C语言:冒泡排序---详细解释
//冒泡排序数字,仅仅适用于数组无序的时候,若有序则不能使用冒号排序 例如: 数字组:5,54,64,98,47 /* 1: 54,64,98,47,5 4次 ...