Функции Object.create - создает объект и записывает в прототип переданный в параметре объект.
Перед прочтенем статьи рекомендуется ознакомиться с new, __proto__, prototype.
См. также hasOwnProperty, constructor.
Синтаксис
Object.create(прототип);
Примеры
Пример
При создании объектов, у них уже есть некоторые свойства, которые они наследуют от Object. Давайте создадим объект, без прототипа (может быть полезным для коллекций):
var obj = {};
alert(obj.toString); //фукцния
var obj2 = Object.create(null);
alert(obj2.toString); //undefined
Пример
С помощью Object.create можно организовать наследование объектов:
var user = {
sayHi: function() {
alert('Привет. Меня зовут ' + this.name);
}
}
var andrey = Object.create(user);
andrey.name = 'Андрей';
andrey.sayHi() //'Привет. Меня зовут Андрей'
В этом примере объект andrey получил такой вид:
var andrey = {
name: 'Андрей',
__proto__: user,
}
Таким образом, при обращении к свойству, которого нет в andrey, оно ищется в объекте, указаном в __proto__.
Конечно, можно было бы и сразу так написать (то есть без Object.create), но напрямую записывать в __proto__ можно только в современных браузерах (ИЕ 10+), а Object.create - ИЕ8+, а также для него легко написать полифил (для поддержки в более старых браузерах).