zoukankan      html  css  js  c++  java
  • Javascript 中的 in, hasOwnProperty, delete, for/in

    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
    }

  • 相关阅读:
    【JAVA基础】正则表达式
    【JAVA基础】常用类的概述和使用
    【JAVA基础】反射机制
    献芹奏曝-Python面试题
    饮冰三年-人工智能-Python-65-Apollo之07 Docker环境部署
    饮冰三年-人工智能-Python-64-Apollo之06测试环境部署
    饮冰三年-人工智能-Docker-63-Docker部署文件帮助系统Mezzanine
    饮冰三年-人工智能-Python-62-ZooKeeper之04实战
    饮冰三年-人工智能-Python-61-ZooKeeper之03原理
    饮冰三年-人工智能-Python-60-ZooKeeper之02安装
  • 原文地址:https://www.cnblogs.com/tylerdonet/p/4651905.html
Copyright © 2011-2022 走看看