对象中是否有某一个属性是否存在有三种方法 in hasOwnProperty Object.hasOwn
如何看某个对象中没有某一个属性
如果我们要检测对象是否拥有某一属性,可以用in操作符
var obj= {
name: '类老师',
age: 18,
school: '家具'
};
console.log('age' in obj); // true
console.log('grade' in obj); // false
在vue中的实际应用,通过判断是否有某一个属性,是否展示出这个标签。
<h2 class="tab-meassage-timeweek" v-if=" 'weekunkown' in item==true? true : false ">{{item.weekunkown}}</h2>
疑惑的地方
let xiaoming={};
console.log('Function' in xiaoming);//为false
console.log('toString' in xiaoming);//为什这里是true了 不是也应该是false吗
看了下面这张图,你就知道了,因为继承啊
因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以obj也拥有toString属性。
或者说
in 如果指定的属性位于对象或其原型链中,“in”运算符将返回true(原型链上的属性会读取)

2. hasOwnProperty
hasOwnProperty 方法会返回一个布尔值。
表示对象自身属性中是否具有对应的值(原型链上的属性不会读取)。
var obj= {
name: '陈三',
age: 18,
school: '宇宙银河系'
};
obj.hasOwnProperty('name'); // true
obj.hasOwnProperty('toString'); // false
// 创建空对象会报错。 空对象是会报错的哈~
let emptyObj = Object.create(null) // 在现实中很少这样使用
console.log(emptyObj.hasOwnProperty('name')) // 报错
// 不会报错
let emptyObj = {}
console.log(emptyObj.hasOwnProperty('name')) // 输出false
3. 使用 Object.hasOwn
Object.hasOwn 可以避免 in 的继承。
也可以避免创建空对象报错的问题。
// 避免继承
let xiaoming = {};
let flag1 = Object.hasOwn(xiaoming, 'toString')
console.log(flag1) //false
//避免空对象报错
let emptyObj = Object.create(null) // 在现实中很少这样使用
let flag2 = Object.hasOwn(emptyObj, 'name')
console.log(flag2) //false
```
对象中是否有某一个属性是否存在有三种方法 in hasOwnProperty Object.hasOwn的更多相关文章
- Java初学者作业——完成对已定义类(Admin)的对象的创建。并完成属性的赋值和方法的调用。
返回本章节 返回作业目录 需求说明: 完成对已定义类(Admin)的对象的创建.并完成属性的赋值和方法的调用. 实现思路: 创建 MyTest 类,并添加 main函数. 在 main函数中完成对 A ...
- Document对象中的一些重要的属性和方法(笔记)
Document对象:每一个web浏览器窗口.标签页和框架由一个window对象所表示.每个window对象都有一个document属性引用的是Document对象,它是一个巨大的API中的核心对象, ...
- 在vuejs 中使用axios不能获取属性data的解决方法
Laravel5.4 vuejs和axios使用钩子mounted不能获取属性data的解决方法 //出错问题:在then 这个里边的赋值方法this.followed = response.data ...
- window对象中的一些重要的属性和方法(笔记)
setTimeout()方法用来实现一个函数在指定的毫秒数之后运行:setTimeout()返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行.由于历史原因,setTime ...
- Element-ui 更新tableData 中 row的某一个属性时,没有更新视图的问题
在一个报警音管理的页面中,每次点击试听的时候,需要把‘试听’ 更新为 ‘停止’, 起初我们给row.play=0时,显示为 试听,row.play=1时显示为停止, 但是在代码中每次为row.play ...
- 判断对象当中有没有某一个属性(AS,JS,Java语言比较)
1.AS 首先说说AS里面如何判断,AS现在很少用这个语言了,当时我们公司的项目当中还有,所以就拿出来一块比较一下,代码如下: //利用Object属性判断 if("name" i ...
- 无法打开工作组信息文件中的表 'MSysAccounts',一个十分搞笑的解决方法
问题提出:从access97导出一个mdb到access2000 为了程序使用命名为system.mdb,后改名为system.dat 在c#中打开,出现 无法打开工作组信息文件中的表 'MSysAc ...
- PHP程序中删除字符串最后一个字符的三种方法
常见的语法格式: foreach ($arr as $key => $value) {$arr_str = $arr['x_id'] . ',' . $arr_str;} 假设字符数组 $arr ...
- C#中删除字符串最后一个字符的几种方法
转载地址 偶然看到的,记录一下,以免忘记 字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法: 1.用的最多的是Su ...
- Math对象中比较常用的计算数学相关的三个方法
Math类中提供了三个与取整有关的方法:ceil.floor.round,这些方法的作用与它们的英文名称的含义相对应,例如: ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil ...
随机推荐
- 一文讲清楚FusionInsight MRS CDL如何使用
摘要:CDL是一种简单.高效的数据实时集成服务,能够从各种OLTP数据库中抓取Data Change事件,然后推送至Kafka中,最后由Sink Connector消费Topic中的数据并导入到大数据 ...
- 火山引擎 DataLeap:从短视频 APP 实践看如何统一数据指标口径
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 短视频正在成为越来越多人发现世界的窗口,其背后的创作者生态建设是各大短视频 APP 不可忽视的重要组成部分. 为了 ...
- 【Java 进阶篇】使用 Stream 流和 Lambda 组装复杂父子树形结构(List 集合形式)
目录 前言 一.以部门结构为例 1.1实体 1.2返回VO 1.3具体实现 1.4效果展示 二.以省市县结构为例 2.1实体 2.2返回VO 2.3具体实现 2.4效果展示 三.文章小结 前言 在最近 ...
- 容器卡在terminate状态无法删除
1. pod卡在terminate状态无法删除.一般是lxcfx 卡住 或者 logcounter组件进程读容器数据盘分区导致的 2. 验证一下我们的猜测 cat /sys/fs/fuse/conn ...
- Linux 下 Docker 操作遭到守护程序套接字时访问权限被拒绝
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker. ...
- POJ:3279-Fliptile【状态压缩】【DFS】
POJ-3279 经典[状态压缩][DFS]题型 题目大意:有一个 M * N 的格子,每个格子可以翻转正反面,它们有一面是黑色,另一面是白色.黑色翻转之后变成白色,白色翻转之后则变成黑色. 游戏要做 ...
- java两个list取交集
直接上代码 List<Integer> list1 = new ArrayList<>(); list1.add(1); list1.add(2); list1.add(3); ...
- Ubuntu 18.04安装arm-linux-gcc交叉编译器的两种方法(附下载地址)
方法一: 我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc. 此方法安装的是最新版的,但是此方法需要FQ,否则99%会失败,这就是为 ...
- P5730
这道题莫名其妙的在本地能过可是洛谷上却0分,把WA的点下载下来之后发现我输出的和他要输出的明明一模一样,说明洛谷的评测有一些问题.我把getchar输入换成cin输入后就AC了,说明洛谷对getcha ...
- eyebeam高级设置
概述 VOIP测试过程中,经常会用到各种各样的SIP终端,eyebeam是其中最常见的一种. 在eyebeam的配置option中,只有少量的配置选项,有些特殊的设置无法配置. 比如DTMF码的发码形 ...