Объекты

Разделы:


МетодыАргументыВозвращаетОписание
hasOwnPropertyстрока — имя свойстваtrue — если у объекта есть такое собственное свойство, либо falseпроверяет, есть ли у объекта собственное свойство, которое было указано в качестве аргумента
Object.assign1) целевой объект
2) один или несколько объектов
получившийся объекткопирует все свойства перечисленных объектов в целевой
Object.create1) объект
2) объект со своими дескрипторами свойств
новый объект с заданным прототипом и свойствамисоздает объект и записывает в прототип переданный в параметре объект
Object.setPrototypeOf1) объект, которому устанавливается новый прототип
2) новый прототип объекта либо null
объект с изменённым прототипомустанавливает прототип (то есть внутреннее свойство [[Prototype]]) указанного объекта в другой объект или null
Object.getOwnPropertySymbolsобъектмассив всех символьных свойств возвращает массив всех символьных свойств переданного объекта
Object.keysобъектмассив собственных ключей возвращает массив собственных ключей переданного объекта
Object.valuesобъектмассив собственных значений возвращает массив собственных значений переданного объекта
Object.entriesобъектмассиввозвращает массив пар [ключ, значение]
Object.getPrototypeOfобъектпрототипвозвращает прототип (то есть, внутреннее свойство [[Prototype]]) указанного объекта
Object.getOwnPropertyDescriptorsобъектвсе собственные дескрипторы свойстввозвращает все собственные дескрипторы свойств данного объекта
Object.getOwnPropertyNamesобъектмассив всех собственных строковых ключейвозвращает массив всех собственных строковых ключей. Не возвращает Symbols поля
Reflect.ownKeysобъектмассив имён, а также Symbols собственных полей объектавозвращает массив имён, а также Symbols собственных полей объекта
Object.fromEntriesмассивобъект, созданный из массивапреобразовывает массив в объект

Проверки

instanceof

(array instanceof Array)

Оператор instanceof проверяет, принадлежит ли объект к определённому классу.


const text = 'Это обычная строка';

const myString  = new String();

text instanceof String
// return: false

myString instanceof String
// return: true

const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

website instanceof Object
// return: true

hasOwnProperty

objectName.hasOwnProperty(key)

Возвращает true, если у objectName есть собственное (не унаследованное) свойство с именем key.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

website.hasOwnProperty('toString')
// return: false

website.hasOwnProperty('domain')
// return: true

website.hasOwnProperty('url')
// return: true

// другой вариант проверки
'domain' in website
// return: true

Изменение

Object.assign

Object.assign(target, obj)

Копирует все свойства перечисленных объектов в целевой. Принимает: 1) целевой объект, 2) один или несколько объектов, из которых будут скопированы свойства в целевой. Возвращает получившийся объект.


const website = {
domain: '',
url: 'frontend',
hosting: 'beget',
};


Object.assign(website, {
		domain: 'frontendx',
  		loading: 0.75,
	},
	{
  		url: 'https://frontendx.ru',
	})

// return: { 
//	domain: "frontendx", 
//  url: "https://frontendx.ru", 
//  hosting: "beget", 
//  loading: 0.75 
//	}

Object.create

Object.create(proto, [descriptors])

Создает объект и записывает в прототип переданный в параметре объект. Первым аргументом передаётся объект, который станет прототипом вновь созданного объекта, вторым параметром — объект со своими дескрипторами свойств, которые могут расширить и дополнить новый объект. Возвращает новый объект с заданным прототипом и свойствами.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

let newObject = Object.create(website, {
    hosting: {
      value: 'beget'
    },
  	domain: {
    value: 'test'
    }
});

newObject.hosting
// return: "beget"

newObject.domain
// return: "test"

newObject.url
// return: "https://frontendx.ru"

// клонирование объекта
const clone = Object.create(
     Object.getPrototypeOf(website), 
     Object.getOwnPropertyDescriptors(website)
);

Object.setPrototypeOf

Object.setPrototypeOf(object, proto)

Устанавливает прототип (то есть внутреннее свойство [[Prototype]]) указанного объекта в другой объект или null. Не рекомендуется использовать, очень медленная операция, лучше использовать Object.create() для создания объекта с нужным прототипом. Первым агрументом идёт объект, которому устанавливается новый прототип, второй аргумент — новый прототип объекта либо null.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

Object.getPrototypeOf(website)
// return: Object {  }

const object = Object.setPrototypeOf(website, null);

Object.getPrototypeOf(website)
// return: null

Object.getPrototypeOf(object)
// return: null

object
// return: Object { domain: "frontendx", url: "https://frontendx.ru" }

Object.fromEntries

Object.fromEntries(array)

Преобразовывает массив в объект. Принимает массив, возвращает объект, созданный из массива.


const website = [
    ['domain', 'frontendx'],
    ['url', 'https://frontendx.ru'],
];

Object.fromEntries(website)
// return: { domain: "frontendx", url: "https://frontendx.ru" }

Возвращаемые значения

Object.getOwnPropertySymbols

Object.getOwnPropertySymbols(object)

Возвращает массив всех символьных свойств переданного объекта.

 


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

const a = Symbol('a');
const b = Symbol.for('b');

website[a] = 'localSymbol';
website[b] = 'globalSymbol';

const objectSymbols = Object.getOwnPropertySymbols(website);

objectSymbols.length
// return: 2

objectSymbols
// return: [Symbol(a), Symbol(b)]

Object.keys

Object.keys(object)

Возвращает массив собственных ключей переданного объекта.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

Object.keys(website)
// return: ["domain", "url"]

Object.values

Object.values(object)

Возвращает массив собственных значений переданного объекта.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

Object.values(website)
// return: ["frontendx", "https://frontendx.ru"]

Object.entries

Object.entries(object)

Возвращает массив пар [ключ, значение].


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

Object.entries(website)
// return: [ ["domain", "frontendx"], ["url", "https://frontendx.ru"] ]

Object.getPrototypeOf

Object.getPrototypeOf(object)

Возвращает прототип (то есть внутреннее свойство [[Prototype]]) указанного объекта.


const proto = {};
const object = Object.create(proto);

Object.getPrototypeOf(object) === proto
// return: true

Object.getPrototypeOf('text') === String.prototype
// return: true

Object.getOwnPropertyDescriptors

Object.getOwnPropertyDescriptors(object)

Возвращает все собственные дескрипторы свойств данного объекта.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

const descriptors = Object.getOwnPropertyDescriptors(website);

descriptors.url.value
// return: "https://frontendx.ru"

descriptors.domain.value
// return: "frontendx"

descriptors
/* return: 
{ 
domain: { 
  value: "frontendx",
  writable: true,
  enumerable: true,
  configurable: true 
}, 
  url: { 
    value: "https://frontendx.ru",
    writable: true,
    enumerable: true,
    configurable: true 
  } 
}
*/

Object.getOwnPropertyNames

Object.getOwnPropertyNames(object)

Возвращает массив всех собственных строковых ключей. Не возвращает Symbols поля.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

Object.getOwnPropertyNames(website)
// return: ["domain", "url"]

Reflect.ownKeys

Reflect.ownKeys(object)

Статический метод, возвращает массив имён, а также Symbols собственных полей объекта.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

const a = Symbol('a');
const b = Symbol.for('b');

website[a] = 'localSymbol';
website[b] = 'globalSymbol';

Object.getOwnPropertyNames(website)
// return: ["domain", "url"]

Reflect.ownKeys(website)
// return: ["domain", "url", Symbol(a), Symbol(b)]

Дополнительно

for in

for(let item in object)

Перебирает только перечисляемые свойства объекта, а также свойства, которые находятся в прототипе.


const website = {
domain: 'frontendx',
url: 'https://frontendx.ru',
};

for(let item in website){
  
console.log(item);
console.log(website[item]);  
  
}
// return: "domain"
// return: "frontendx"
// return: "url"
// return: "https://frontendx.ru"