对象的枚举

for in
var obj = {
  name: '13',
  age: 123,
  sex: 'male',
  height: 180,
  weight: 75
}
for(var key in obj){
  console.log(key + " " +typeof(key));
  console.log(obj[key]);
}

但是该方法会把原型链上的属性也遍历,这也许不是我们想要的,我们可以用以下方法2来解决

1.hasOwnProperty
var obj = {
  name: '13',
  age: 123,
  sex: 'male',
  height: 180,
  weight: 75
}
for(var key in obj){
  if(obj.hasOwnProperty(prop)){ //过滤
    console.log(obj[key]);
  }
}
2.in

in会遍历对象上所有能访问的属性,包括原型

3.instanceof

A instanceof B 表示判断 A 对象是不是 B构造函数构造出来的,这是官方解释,但是我们在使用过程中,往往是判断 A对象的原型链上有没有B的原型

怎么判断是数组还是对象

1.使用 constructor 进行区分

[].constructor   //function Array() {[native code]}
var obj = {};
obj.constructor //function Object() {[native code]}

2.使用 instanceof 进行区分

[] instanceof Array   //true
var obj = {};
obj instanceof Array   //false

3.通过 toString 方法来区分

Object.prototype.toString.call([]);//"[object Array]"
Object.prototype.toString.call(123);//"[object Number]"
Object.prototype.toString.call({});//"[object Object]"
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,176评论 0 21
  • JavaScript面向对象程序设计 本文会碰到的知识点:原型、原型链、函数对象、普通对象、继承 读完本文,可以学...
    moyi_gg阅读 773评论 0 2
  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 2,153评论 0 6
  • JavaScript语言精粹 前言 约定:=> 表示参考相关文章或书籍; JS是JavaScript的缩写。 本书...
    微笑的AK47阅读 594评论 0 3
  • 很久没有静下心来去读一本书了,仔细想想,自己内心很不舒服,不读书总是有这样或者那样的理由。 不读书就...
    牵只蜗牛阅读 136评论 0 2