in 运算符

判断对象是否拥有某一属性
只要对象拥有该属性,就会返回true,否则false

var point = { x:1, y:1 };
alert( 'x' in point );  //true

var arr = ['one', 'two'];
alert( 'kang' in arr );  //false
alert( '1' in arr );  //true
alert( 'push' in arr );  //true

var fn = function(){};
fn.prototype.site = 'cnblogs.com';
var obj = new fn();
alert( 'site' in obj );  //true

hasOwnProperty

判断对象是否具有某一属性。这个属性必须是自己具有的,即非继承的。

var o = {};
o.name = 'object';
alert( o.hasOwnProperty('kang') );    //false: 不存在
alert( o.hasOwnProperty('toString') );    //false: 'toString'方法继承自'Object'
alert( o.hasOwnProperty('name') ); //true

alert( Math.hasOwnProperty("kang") ); //false
alert( Math.hasOwnProperty("cos") ); //true;
alert( Math.hasOwnProperty("toString") );  //false: 'toString'方法继承自'Object'

var base = function(){
    this.name = 'Rain Man';
};
base.prototype.site = 'cnblogs.com';
var o = new base();
alert( o.hasOwnProperty('site') ); //false: 是继承的
alert( o.hasOwnProperty('name') ); //true

delete 运算符

删除对象的属性,删除后不能使用 for/in 枚举出删除的属性。
删除数组的元素,删除后数组的 length 不会改变,不可以使用 for/in 枚举出来删除的元素; shift()、pop()、splice()才会真正的删除数组中的元素

var point = { x:1, y:1 };
delete point.x;  //{ y:1 }

var arr = ['one', 'two'];
delete arr[0];  //[undefined, 'two']

for/in

枚举对象的属性
对象的一些属性是不可以使用for/in来输出的,例如:内部的,用户自定义的可以,从构造函数prototype中继承的也可以枚举出

var arr = ['one', 'two'];
arr.author = 'rainman';
//不会枚举出数组的push,pop等方法,因为这些方法都是内部的
for( var i in arr ) ist(arr[i]);    //'one'、'two'、'rainman'

var Blog = function(){};
Blog.prototype.site = 'cnblogs.com';
var oBlog = new Blog();
for( var i in oBlog ) ist(oBlog[i]); //'cnblogs.com'

var RM = function(){};
RM.prototype = new Blog();
RM.prototype.url = 'http://rainman.cnblogs.com'
var oRM = new RM();

for( var i in oRM ){
    ist(i + ':'+ oRM[i]); //'url:http://rainman.cnblogs.com'、site:cnblogs.com
}

Javascript 中的 in, hasOwnProperty, delete, for/in的更多相关文章

  1. javascript 中isPrototypeOf 、hasOwnProperty、constructor、prototype等用法

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

  2. javascript中in和hasOwnProperty区别

    in操作符只要通过对象能访问到属性就返回true.hasOwnProperty()只在属性存在于实例中时才返回true. function Person(){ } Person.prototype.n ...

  3. 深入理解javascript 中的 delete(转)

    在这篇文章中作者从<JavaScript面向对象编程指南>一书中关于 delete 的错误讲起,详细讲述了关于 delete 操作的实现, 局限以及在不同浏览器和插件(这里指 firebu ...

  4. JavaScript中typeof,instanceof,hasOwnProperty,in的用法和区别

    一. typeof操作符 typeof操作符用于返回正在使用值的类型. // 使用原始值 let mNull = null; let mUndefined = undefined; let mStri ...

  5. 关于JavaScript中的delete操作

    关于JavaScript中的delete操作 看到一道题,是这样的: (function(x){ delete x; return x; })(1); 1 null undefined Error 我 ...

  6. Javascript中的delete

    一.问题的提出 我们先来看看下面几段代码,要注意的是,以下代码不要在浏览器的开发者工具(如FireBug.Chrome Developer tool)中运行,原因后面会说明: 为什么我们可以删除对象的 ...

  7. JavaScript中hasOwnProperty函数

      JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性. 使用方法: object.hasOwnProperty(proName) 其中参数 ...

  8. Javascript中的delete介绍

    关于JavaScript中的Delete一直没有弄的很清楚,最近看到两篇这方面的文章,现对两文中部分内容进行翻译(内容有修改和添加,顺序不完全一致,有兴趣推荐看原文),希望能对大家有所帮助 一.问题的 ...

  9. javascript 中的 delete

    那么,为什么我们能删除一个对象的属性: var x = { a: 1 }; delete x.a; // true x.a; // undefined 但却不能删除一个变量: var x = 1; d ...

随机推荐

  1. English Training Material - 05

    Could I leave a message? Language Checklist Telephoning (1) Introducing yourself Good morning, Arist ...

  2. 2015年第11本:代码整洁之道Clean Code

    前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁 ...

  3. 初识UIScrollView

    RootView.m #import "RootView.h" #define YHColor [UIColor colorWithRed:arc4random() % 256 / ...

  4. android 音乐播放器简单实现

    package com.zhangbz.musicplayer; import java.io.File; import android.app.Activity; import android.me ...

  5. 关于破解IDEA

    博客的意义就在于分享 哈哈 今天想装个 IDEA玩玩 去官网 下了个 安装包 想破解 结果度娘 帮解决了 直接po方法 很简单 就是安装好注册的时候 选择 License server ,填 http ...

  6. (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  7. Mysql中的触发器

    什么是触发器 简单的说,就是一张表发生了某件事(插入.删除.更新操作),然后自动触发了预先编写好的若干条SQL语句的执行: 特点及作用 特点:触发事件的操作和触发器里的SQL语句是一个事务操作,具有原 ...

  8. Python yield 使用浅析(iterable generator )

    http://blog.csdn.net/preterhuman_peak/article/details/40615201 如何生成斐波那契數列 斐波那契(Fibonacci)數列是一个非常简单的递 ...

  9. SQL Server 2008 R2——学习/练习/错误/总结/搜集

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  10. nginx 做负载均衡

    最近正在研究Nginx,Nginx作为反向代理服务器,可以对Web服务器提供加速,并且具有负载均衡的功能. 首先我要在官网下载Nginx(http://nginx.org/en/download.ht ...