在遍历一个对象的时候我们会使用到for in属性。

现有对象和数组如下:

var filght = {
number: 1,
status: 'watit',
arrival: [1,2,3],
addName: function () {
return this.number + 99;
}
}
var arr = [
'name',
'age',
'number'
]

对于数组来说我们可以使用for来遍历 也可以使用for

for(var i=0; i< arr.length; i++){
console.log(arr[i]);
}
for(var k in arr){
console.log(k +':'+arr[k])
}

现在要遍历filght里面的属性,我们可以使用for in 但是不能使用 for来遍历,因为对象没有长度。

for(var k in filght){
console.log(k +':'+filght[k])
}

那么for 和for in 遍历最大的区别是for in可以遍历出原型对象的属性,但是for 不行。

现在我们给Array的原型添加属性。

Array.prototype.sayName = '111'

然后遍历。

for(var k in arr){
console.log(k +':'+arr[k])
}
console.log('-----------------------------------------------------');
for(var i=0; i< arr.length; i++){
console.log(arr[i]);
}

得到结果

证明 for in 循环的确可以遍历到原型对象上的属性。那么如果我们使用了for in 遍历,但是不想要得到原型上的属性怎么办呢。

对象不可以使用for 循环遍历,所有有一个hasOwnProperty 可以解决。

例如:先给Object原型添加属性

       Object.prototype.sayName = function(){
return "viven";
}

然后通过for in遍历

for(var k in filght){
console.log(k +':'+ filght[k]);
}

通过hasOwnProperty 过滤

for(var k in filght){
console.log(k +':'+ filght[k]);
}
console.log('===========================================')
for(var k in filght){
if(filght.hasOwnProperty(k)){
console.log(k +':'+ filght[k]);
}
}

得到结果

现在原型上的属性已经被过滤掉了。这个方法同样适用于Array数组

for in 与for 与hasOwnProperty的更多相关文章

  1. 步入angularjs directive(指令)--准备工作熟悉hasOwnProperty

    在讲解directive之前,先做一下准备工作,为何要这样呢? 因为我们不是简单的说说directive怎么用,还要知道为什么这么用!(今天我们先磨磨刀!). 首先我们讲讲js 基础的知识--hasO ...

  2. hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()的用法

    javascript中有原型这么一个概念,任何一个构造函数都有它对应的原型(prototype),我们可以给这个原型赋予一些我们想要的属性,像下面这样: function Gadget(name, c ...

  3. JavaScript对象篇之hasOwnProperty

    判断一个属性是定义在对象本身而不是继承自原型链,我们需要使用从 Object.prototype 继承而来的 hasOwnProperty 方法.hasOwnProperty 方法是 Javascri ...

  4. js中的hasOwnProperty和isPrototypeOf方法

    hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员. isPrototypeO ...

  5. JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别

    JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...

  6. hasOwnProperty 递归 简单回调 链式调用

    1.hasOwnProperty 函数的返回值为Boolean类型.如果对象object具有名称为propertyName的属性,则返回true,否则返回false. function Box(){ ...

  7. [Effective JavaScript 笔记]第45条:使用hasOwnProperty方法以避免原型污染

    之前的43条,44条讨论了属性的枚举,但都没有彻底地解决属性查找中原型污染的问题.看下面关于字典的一些操作 'zhangsan' in dict; dict.zhangsan; dict.zhangs ...

  8. hasOwnProperty和in

    返回一个布尔值,指出一个对象是否具有指定名称的属性. hasOwnProperty 此方法无法检查该对象的原型链中是否具有该属in 可以检查原型链中是否具有该属

  9. JS中isPrototypeOf 和hasOwnProperty 的区别

    1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的原型链中,是则返回true,否则返回false. 格式如下: object ...

  10. hasOwnProperty

    var Person = function(){ this.name = "nike"; this.age = "20" } var person = new ...

随机推荐

  1. STA之RC Corner再论

    Q:RC-Corner跟PVT怎么组合? A:通常的组合:   Q:通常说的ttcorner指的是啥? A:@孟时光 ttcorner是指管子在tt+RCtyp吧. Typesof corners W ...

  2. Bugku - 好多压缩包 - Writeup

    bugku - 好多压缩包 - Writeup M4x原创,转载请注明出处 这道题前前后后做了好几天,这里记录一下 题目 文件下载 分析 解压下载后的文件,发现有68个压缩文件,并且每个压缩文件里都有 ...

  3. jmeter的使用---用户变量

    用户变量有以下方式: 一.外部引入:csv引入参数 二.sample传递参数:http请求的body参数 三.定义用户变量:全局变量 (1)用户定义的变量 name,和value   一对一 (2)用 ...

  4. 如何创建redis集群

    1.下载redis源码包 wget http://download.redis.io/releases/redis-3.2.4.tar.gz 2.解压并安装 tar xvf redis-.tar.gz ...

  5. kotori和bangdream

      #include<cstdio> #include<iostream> using namespace std; int n,x,a,b; int main() { cin ...

  6. Go第三方库之tail

    Tail Demo // tail.TailFile()函数开启goroutine去读取文件,通过channel格式的t.lines传递内容. t, err := tail.TailFile(&quo ...

  7. Spring - 周边设施 - H2 embedded 版本引入

    1. 概述 在 Spring 开发中, 引入 H2 做辅助测试数据库 2. 场景 复习 Spring, 复习到 持久化 部分 需要一个 数据库 来做测试 方案 方案1: 搭建 MySQL 实例 虽然现 ...

  8. Codeforces Round #618 (Div. 1)C(贪心)

    把所有数看作N块,后面的块比前面的块小的话就合并,这个过程可能会有很多次,因为后面合并后会把前面的块均摊地更小,可能会影响更前面地块,像是多米诺骨牌效应,从后向前推 #define HAVE_STRU ...

  9. 转载:进程退出状态--waitpid status意义

    最近遇到一个进程突然退出的问题,由于没有注册signalhandler所以没有捕捉到任何信号. 但是从log中看到init waitpid返回的status为0x008b,以前对status不是很了解 ...

  10. 09-Docker-Volumes数据管理

    目录 09-Docker-Volumes数据管理 参考 数据卷类型 数据卷操作 bind数据卷 volume数据卷 tmpfs数据卷 09-Docker-Volumes数据管理 Docker Vers ...