• Object函数的内置方法 Object.getOwnPropertyNames


    一、定义

    Object.getOwnPropertyNames()方法返回一个数组,包含对象所有自有的属性和方法(但不包括Symbol值作为名称的属性)的字符串名。

    二、语法

    Object.getOwnPropertyNames(obj);

    参数

    obj:要获取的自有属性和方法名的对象

    返回值

    在给定对象上找到的自有属性和方法(不包括Symbol值的属性)对应的字符串数组。

     

    在ES5中,如果传递给方法的参数不是对象,那么会抛出TypeError错误。

    在ES6中,如果传递给方法的参数不是对象,会被强制转换为对象。

     三、示例

    示例1:获取对象的原型对象上的所有自有属性和方法

    var obj = {};
    var target = Object.getPrototypeOf(obj);
    Object.getOwnPropertyNames(target);
    /* 
    ["constructor", "__defineGetter__", "__defineSetter__", "hasOwnProperty", 
    "__lookupGetter__", "__lookupSetter__", "isPrototypeOf", "propertyIsEnumerable", 
    "toString", "valueOf", "__proto__", "toLocaleString"]
    */

    示例2:只获取对象的原型对象上的不可枚举属性

    var str = 'abcde'; // 字符串类型
    
    // 获取所有自有属性和方法,str会被强制转为new String('adcde'); ES5下会报错
    var properties = Object.getOwnPropertyNames(str); // ["0", "1", "2", "3", "4", "length"]
    
    // 获取所有可枚举的属性和方法
    var keys = Object.keys(str); // ["0", "1", "2", "3", "4"]
    
    // 过滤得到不可枚举的属性和方法
    var no_enumerate = properties.filter(function (value) {
        if (keys.indexOf(value) == -1) { 
            return true;
        } 
        return false;
    });
    no_enumerate; // ["length"]
  • 相关阅读:
    POJ 1017
    poj 2709
    poj 1328
    POJ 2386
    POJ 1065
    POJ 3728
    hdu--1004--Let the Balloon Rise
    hdu--2570--迷瘴(贪心)
    hdu--1257--最少拦截系统(贪心)
    hdu--1230--火星A+B
  • 原文地址:https://www.cnblogs.com/zhilu/p/16076125.html
Copyright © 2020-2023  润新知