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中的delete操作

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

  2. Javascript中的delete

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

  3. JavaScript中hasOwnProperty函数

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

  4. Javascript中的delete介绍

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

  5. Javascript 中的 in, hasOwnProperty, delete, for/in

    in 运算符 判断对象是否拥有某一属性只要对象拥有该属性,就会返回true,否则false var point = { x:1, y:1 };alert( 'x' in point );  //tru ...

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

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

  7. javascript 中的 delete

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

  8. 【JavaScript】关于delete

    delete 只能删除属性,不能删除变量 比如 var m = "haha"; delete m; //false m = "haha";----->wi ...

  9. [Javascript] Prototype, hasOwnProperty(), valueOf() and toString() methods.

    Sometime, use can rewrite the toString , valueOf method to make those function more useful: For exma ...

随机推荐

  1. Go嵌入类型及内部提升样例

    这个有点新鲜哟... package main import ( "fmt" ) type notifier interface { notify() } type user st ...

  2. mysql table status

    SHOW TABLE STATUS 能获得表的信息 可以SHOW TABLE STATUS where name='表名'

  3. POJ 2503.Babelfish-sscanf()函数+strcmp()函数+二分

    Babelfish   Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 44545   Accepted: 18803 Des ...

  4. ACM-ICPC北京赛区(2017)网络赛1【模拟+枚举+数组操作】

    题目1 : Visiting Peking University 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Ming is going to travel for n ...

  5. dfs序学习总结

    dfs序: 每个节点在dfs中的进出栈的时间序列. 树是非线性结构,根节点连着子节点,那么dfs序...节点进出栈的时间先后? 从根节点入栈,然后左儿子入栈,左儿子出栈,右儿子入栈,右儿子出栈,根节点 ...

  6. Codeforces Round 252 (Div. 2)

    layout: post title: Codeforces Round 252 (Div. 2) author: "luowentaoaa" catalog: true tags ...

  7. Track Cylinder

    1 Track = 48 KB1 Cylinder = 720 KB so 1 Cylinder = 15 Tracks Read more: http://ibmmainframes.com/abo ...

  8. POJ 3293 Rectilinear polygon(几何基础)

    [题目链接] http://poj.org/problem?id=3293 [题目大意] 给出一些点,每个点只能向外引出一条平行X轴,和Y轴的边, 问能否构成一个闭多边形,如果能,返回多边形的总边长, ...

  9. 权限管理-RBAC

    (一)RBAC 通过用户与角色关联,角色与操作的关联实现用户与操作的关联 (二)权限细分 (三)数据库设计 (四)程序设计 (五)权限与应用程序 (1)应用URL实现程序权限控制 (2)应用code实 ...

  10. 搭建SSH框架–搭建篇

    工具: IDE:My Eclipse 2015 数据库:Orcale 创建Web项目 1.1 名称:PersonalWeb 1.2 勾选创建web.xml 1.3 Finsh 搭建Spring框架 2 ...