判断一个js对象,是否具有某个属性
一个对象,想必我们关注的最多的应该是它上面的属性有哪些吧。那么,怎么判断一个对象是否具有某个属性呢?
/*下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同。*/
// 对象的写法
var myObject = {
"mm": "m1",
"height": 1,
"width": 1
};
if(myObject["mm"]){
console.log(myObject["mm"]); // m1
} //最开始报错:mm is not defined, 是因为myObject["mm"]写成了myObject[mm], 没有加引号
if(myObject.width){
console.log(myObject.width); //
}
if(myObject.hasOwnProperty('height')){
console.log(myObject.height); //
} /*判断JS对象是否拥有某属性 两种方式,但稍有区别*/
//1.in运算符
console.log('mm' in myObject); // true
console.log('toString' in myObject); // true
//可看到无论是name,还是原形链上的toString,都能检测到返回true。 //2.hasOwnProperty 方法
console.log(myObject.hasOwnProperty('mm')); // true
console.log(myObject.hasOwnProperty('toString')); // false
//原型链上继承过来的属性无法通过hasOwnProperty检测到,返回false。 /*这个时候,它会输出原型的属性
在很多时候,我们不需要遍历它原型的属性,还有一个原因就是,我们现在用到的对象,
我们不能保证,其他开发人员,有没有,在它的原型上加一些属性呢?所以呢,我们就
过滤一下我们对象的属性吧,这个时候就用到了hasOwnProperty方法*/
Object.prototype.say = "hello"; // 添加到对象Object上面
for(var i in myObject){
console.log(myObject[i]); // m1 1 1 hello
}
var test = [1,2,3,4];
Array.prototype.say = "hello"; //添加到数组Array上面
for(var i in test){
console.log(test[i]); // 1 2 3 4 hello
}
//改进:
Object.prototype.say = "hello"; // 添加到对象Object上面
for(var i in myObject){
if(myObject.hasOwnProperty(i)){
console.log(myObject[i]); // m1 1 1
}
}
var test = [1,2,3,4];
Array.prototype.say = "hello"; //添加到数组Array上面
for(var i in test){
if(test.hasOwnProperty(i)){
console.log(test[i]); // 1 2 3 4
}
}
//ES6中 Set的写法
var set = new Set();
set.add("width");
set.add("height");
if(set.has("width")){
console.log(set); //Set {"width", "height"}
console.log([...set]); // ["width", "height"]
}
判断一个js对象,是否具有某个属性的更多相关文章
- 如何判断一个js对象是否一个DOM对象
我们在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法. 要判断一个对象是否DOM对象,首先想到的无非就是它是否具有D ...
- 如何判断一个js对象是否是Array
经常遇到一个问题,判断某个对象是否为数组类型,在Js中检测对象类型的常见方式有以下: typeof操作符 对于Function.String.Number.Undefined等几种类型的对象来说,几乎 ...
- 判断一个js对象是否是Array
今天在做题时遇到这个问题,找答案的时候,发现评论里大神好多 . 在开发中,我们经常需要判断某个对象是否为数组类型,总结判断某个对象是否是数组的方法. 1.typeof 操作符 对于Function, ...
- 如何判断一个js对象是不是Array
1. instance of 2.constructor 3. isArray 1.var a=new Array(); a instanceof Array; //true 2.var a=new ...
- 判断一个js对象是不是数组
//今天突然想到一个问题,如何判断一个对象是不是数组 var arr = [0, 1, 2]; console.log(arr) //object, 显然不行 //查阅了很多资料,发现几个挺不错的方法 ...
- 判断JS对象是否拥有某属性的方法举例
判断JS对象是否拥有某属性 JS是否拥有某属性的判断方法,这里提供两种方式,供大家参考. 1.in 运算符 var obj = {name:'jack'}; alert('name' in obj); ...
- 如何判断一个C++对象是否在堆栈上(通过VirtualQuery这个API来获取堆栈的起始地址,然后就可以得到答案了),附许多精彩评论
昨天有人在QQ群里问到如何判断一个C++对象是否在堆栈上, 我在网上搜索了下, 搜到这个么一个CSDN的帖子http://topic.csdn.net/t/20060124/10/4532966. ...
- DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为(转)
一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢 ...
- Java判断一个类里是否存在某个属性
Java判断一个类里是否存在某个属性 测试pojo类,比方我有个User类 @Getter @Setter public class User { private Long id; private S ...
随机推荐
- python文档字符串
#coding=utf-8 #文档字符串def d(i,j): """这个函数实现了一个乘法运算. 函数会返回一个乘法运算的结果.""" k ...
- java邮件客户端
/*** *邮件VO **/package net.jk.util.email.vo; import java.util.Date; import java.util.List; import net ...
- Deep Learning学习随记(一)稀疏自编码器
最近开始看Deep Learning,随手记点,方便以后查看. 主要参考资料是Stanford 教授 Andrew Ng 的 Deep Learning 教程讲义:http://deeplearnin ...
- [转] iOS TableViewCell 动态调整高度
原文: http://blog.csdn.net/crayondeng/article/details/8899577 最近遇到了一个cell高度变化的问题,在找解决办法的时候,参考了这篇文章,觉得不 ...
- excel设置单元格不可编辑
把允许编辑的单元格选定,右键-设置单元格格式-保护,把锁定前的对钩去掉.再点工具-保护工作表.这样就可以只让你刚才设定的单元格允许编辑,其他不允许.
- 编写可维护的javascript代码---开篇(介绍自动报错的插件)
文章开篇主要推荐了2款检测编程风格的工具: JSLint和JSHint: jsLint是由Douglas Crockford创建的.这是一个通用的javascript代码质量检测工具,最开始JSLin ...
- php面向对象编程--学习笔记
1.声明一个类 在php中使用class关键字创建一个新类,类包括属性与方法.语法格式如下: <?php class类名{ 属性: 方法: } ?> 2.创建一个实例对象 创建对象的过程称 ...
- phonegap学习入门
phonegap 开发入门 PhoneGap官方网站上有详细的入门示例教程,这里,我针对使用PhoneGap进行Android移动应用的开发对其官网的Get Started进行一些介绍.补充. Ste ...
- Linux bash重拾 2016-8-16
bash支持的引号: "" 双引号:弱引用,可以实现变量替换(变量会替换为值) [root@localhost ssh-6Xolw4LLAMwe]# echo "dire ...
- 转:postgresql:pg_restore: [archiver] input file does not appear to be a valid archive的解决方法
使用ps_restore恢复备份数据库出错:pg_restore: [archiver] input file does not appear to be a valid archive 使用pg ...