zoukankan      html  css  js  c++  java
  • Object.prototype.propertyIsEnumerable

    语法:

    obj.propertyIsEnumerable(prop);

    此方法返回一个布尔值,表明指定的属性名是否是当前对象可枚举的自身属性。

    1.如果是用户自定义了对象的属性,将返回true,比如

    var o = {};
    
    o.prop = '我是个可枚举属性';
    o.fn = function(){};
    
    //用户自定义属性
    console.log(o.propertyIsEnumerable('prop'));//true
    console.log(o.propertyIsEnumerable('fn'));//true

    用for in遍历一下o对象,结果为:

    for(var property in o){
        console.log(property);
    }
    //prop fn

    2.如果是自定义类型的情况

    function Dog(name){
        this.name = name;
    }
    Dog.prototype.sayName = function(){
        var some = this.name;
    }
    var dog = new Dog('huang');
    console.log(dog.propertyIsEnumerable('name')); //true 'name'-->来自Dog类型的构造函数
    console.log(dog.propertyIsEnumerable('sayName'));//false 'sayName'-->继承自Dog类型

    用for in 遍历一下dog对象,结果为:

    for(var property in dog){
        console.log(property);
    }//name sayName

    sayName能遍历出来,但是他不是dog自身的属性。

    3.如果是内置对象属性或者是继承属性

    var ob = {};
    console.log(Math.propertyIsEnumerable('random'));//false  内置属性
    console.log(window.propertyIsEnumerable('name'));//true 内置属性 console.log(ob.propertyIsEnumerable('constructor'));//false constructor-->继承Object原型对象属性

    4.如果是动态增加Object原型对象属性

    var obj = {};
    Object.prototype.Color = 'green';
    console.log(obj.propertyIsEnumerable('Color'));//false 

    Color是继承的属性,所以为false。

  • 相关阅读:
    java开发之经验之谈
    mac安装openssl
    DataTables在IE8下报'style' 为空或不是对象错误问题 , SCRIPT5007: 无法获取未定义或 null 引用的属性“style”
    mac启动项配置文件
    idea导入插件项目,不能运行问题
    mac 完全卸载intellij
    msyql分组查询,按照日期格式
    原型模式
    抽象工厂模式
    简单工厂模式
  • 原文地址:https://www.cnblogs.com/wang-jiang/p/4472408.html
Copyright © 2011-2022 走看看