js之对象2

130 阅读1分钟
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.colors = ['red', 'blue'];
}
Person.prototype.sayName = function(){
    console.log('Person', this.name);
}

var person1 = new Person('zhangan', 25);

1、Object.Object.getPrototypeOf(obj)

返回其原型的对象

Object.Object.getPrototypeOf(person1)
{
    sayName: function,
    constructor: function,
    [[prototype]]: Object
}

2、Object.getOwnPropertyDescriptors(obj)、

#Object.getOwnPropertyDescripter(obj, prop) 获取对象属性的描述信息

Object.Object.getOwnPropertyDescriptors(person1)
{
    age: {
        configurable: true
        enumerable: true
        value: 25
        writable: true
    },
    name: {,,, value: 'zhangan'}
    colors: {,,,value: ['red', 'blue']}
}

Object.Object.getOwnPropertyDescriptor(person1, 'age')
{
    configurable: true
    enumerable: true
    value: 25
    writable: true
}

3、Object.defineProperty(obj, prop, descriptor)

Object.defineProperties(obj, props)

对象上设置属性

var obj = {a: 'a'};
Object.defineProperty(obj, 'key1', {
    enmuerable: false,
    write: false,
    value: 'key111'
    configurable: false,
    get: function(){
        return value;
    },
    set: function(newValue){
        value = newValue
    }
});

//obj的值
obj={
    a: 'a',
    key1: 'key111'
}

4、Object.getOwnPropertyNames(obj)

以数组形式,返回属性名称的集合,包括可枚举和不可枚举属性名称

Object.getOwnPropertySymbols(obj)

返回Symbols属性值集合

var key = Symbol('key');
var obj = {
    [key]: 123, 
    value: 456
};
Object.getOwnPropertySymbols(obj)//[Symbol(key)]