一个对象,想必我们关注的最多的应该是它上面的属性有哪些吧。那么,怎么判断一个对象是否具有某个属性呢?

 /*下面是一个对比,看看在判断是否包括一个键上面,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对象,是否具有某个属性的更多相关文章

  1. 如何判断一个js对象是否一个DOM对象

    我们在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法. 要判断一个对象是否DOM对象,首先想到的无非就是它是否具有D ...

  2. 如何判断一个js对象是否是Array

    经常遇到一个问题,判断某个对象是否为数组类型,在Js中检测对象类型的常见方式有以下: typeof操作符 对于Function.String.Number.Undefined等几种类型的对象来说,几乎 ...

  3. 判断一个js对象是否是Array

    今天在做题时遇到这个问题,找答案的时候,发现评论里大神好多 . 在开发中,我们经常需要判断某个对象是否为数组类型,总结判断某个对象是否是数组的方法. 1.typeof 操作符 对于Function, ...

  4. 如何判断一个js对象是不是Array

    1. instance of 2.constructor 3. isArray 1.var a=new Array(); a instanceof Array; //true 2.var a=new ...

  5. 判断一个js对象是不是数组

    //今天突然想到一个问题,如何判断一个对象是不是数组 var arr = [0, 1, 2]; console.log(arr) //object, 显然不行 //查阅了很多资料,发现几个挺不错的方法 ...

  6. 判断JS对象是否拥有某属性的方法举例

    判断JS对象是否拥有某属性 JS是否拥有某属性的判断方法,这里提供两种方式,供大家参考. 1.in 运算符 var obj = {name:'jack'}; alert('name' in obj); ...

  7. 如何判断一个C++对象是否在堆栈上(通过VirtualQuery这个API来获取堆栈的起始地址,然后就可以得到答案了),附许多精彩评论

      昨天有人在QQ群里问到如何判断一个C++对象是否在堆栈上, 我在网上搜索了下, 搜到这个么一个CSDN的帖子http://topic.csdn.net/t/20060124/10/4532966. ...

  8. DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为(转)

    一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢 ...

  9. Java判断一个类里是否存在某个属性

    Java判断一个类里是否存在某个属性 测试pojo类,比方我有个User类 @Getter @Setter public class User { private Long id; private S ...

随机推荐

  1. jQuery的live()方法对hover事件的处理示例

    hover([over,]out) 一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法 当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数. 当鼠标移出这个元素时,会触发指定的第二个 ...

  2. 5JS树形结构菜单和jQuery版

    第一版JS版HTML: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  3. fastjson反序列化

    package cn.jsonlu.passguard.utils; import com.alibaba.fastjson.JSON; import java.lang.reflect.Type; ...

  4. mac在 aliyun linux ecs实例上安装 jdk tomcat mysql

    用了一个ftp 工具 把 gz rpm 等 传递到ecs 上 -- 用这个Transmit 用ssh远程登录,然后依次安装 jdk tomcat  mysql 到 /usr/local/... 设置环 ...

  5. 各版本 linux(转)

    Linux各种版本下载 ftp://ftp.linuxforum.net/ISO/Redhat7.3/valhalla-i386-disc1.iso ftp://ftp.linuxforum.net/ ...

  6. [转帖]AVS音视频编解码技术了解

    AVS高清立体视频编码器 电视技术在经历了从黑白到彩色.从模拟到数字的技术变革之后正在酝酿另一场技术革命,从单纯观看二维场景的平面电视跨越到展现三维场景的立体电视3DTV.3DTV系统的核心问题之一是 ...

  7. Swift - 04 - 浮点型

    import UIKit var str = "Hello, playground" // 显式定义浮点型常量 let PI:Float = 3.141592612312312 l ...

  8. 重新开始学习javase_集合_Set

    一,Set之HashSet(转:http://blog.csdn.net/zheng0518/article/details/42197337) 1.    HashSet概述: HashSet实现S ...

  9. hive 桶相关特性分析

    1. hive 桶相关概念     桶(bucket)是指将表或分区中指定列的值为key进行hash,hash到指定的桶中,这样可以支持高效采样工作.     抽样( sampling )可以在全体数 ...

  10. javascript mvc 简单例子

    <!DOCTYPE html> <html> <head> </head> <body> <input type="text ...