Без необходимости проверки hasOwnProperty
с помощью Object.keys
(часто предпочтительнее):
for ( const key of Object.keys( obj ) )
{
console.log( key, obj[key] );
}
data | accessor |
---|---|
configurable: boolean = false | |
enumerable: boolean = false | |
writeble: boolean = false | get: () => any |
value: any = undefined | set: ( value: any ) => void |
const bob2 = {
age: 20,
};
Object.defineProperty(
bob2,
'name',
{
value: 'Bob',
}
);
Object.defineProperty(
bob2,
'age',
{
configurable: true,
enumerable: false,
value: 21,
}
);
Object.defineProperty(
bob2,
'fullName',
{
configurable: true,
enumerable: true,
get: function ()
{
return `${this.firstName} ${this.lastName}`
},
set: function ( value )
{
const parts = value.split( ' ' );
this.firstName = parts[0];
this.lastName = parts[1];
}
}
);
const bob3 = {
firstName: 'Bob',
lastName: 'Smith',
};
Object.defineProperties(
bob3,
{
age: {
configurable: true,
enumerable: true,
writable: true,
value: 21,
},
gender: {
enumerable: true,
value: 'male',
},
fullName: {
configurable: true,
enumerable: true,
get: function ()
{
return `${this.firstName} ${this.lastName}`
},
set: function ( value )
{
const parts = value.split( ' ' );
this.firstName = parts[0];
this.lastName = parts[1];
}
}
}
);
const bob4 = Object.create(
Object.prototype,
{
firstName: {
enumerable: true,
writable: true,
value: 'Bob',
},
gender: {
enumerable: true,
value: 'male',
},
}
);
const bob5 = {
firstName: 'Boba',
lastName: 'Fett',
// ES5
get fullName()
{
return `${this.firstName} ${this.lastName}`
},
set fullName( value )
{
const parts = value.split( ' ' );
this.firstName = parts[0];
this.lastName = parts[1];
},
// ES2015
say( message )
{
console.log( `${this.fullName}: ${message}` );
},
};