Для создания объекта, в дополнение к использованию литералов и новых операторов, в стандарте Ecmascript 5, Object.Create () также можно использовать. Функция object.create () принимает два объекта в виде параметров: первый объект должен представлять прототип созданного объекта; Второй объект не является обязательным для определения различных свойств созданного объекта (например, для записи, перечисленного).
Кода -копия выглядит следующим образом:
var o = object.create ({x: 1, y: 7});
console.log (o); // Object {x = 1, y = 7}
console.log (o .__ Proto __); // Object {x = 1, y = 7}
Вызов object.create () в качестве первого параметра будет генерировать объект без прототипа, который не будет иметь никаких основных свойств объекта (например, метод toString (), используя оператор + для этого объекта, будет выбросить исключение)::
Кода -копия выглядит следующим образом:
var o2 = object.create (null);
console.log ("это" + o2); // ошибка типа, не удается преобразовать O2 в примитивный тип
Для браузеров, которые поддерживают только стандарт Ecmascript 3, вы можете использовать метод Дугласа Крокфорда для выполнения операции Object.Create ():
Кода -копия выглядит следующим образом:
if (typeof object.create! == 'function') {
Object.create = function (o) {
Функция f () {}
F.Prototype = O;
вернуть новый f ();
};
}
newObject = object.create (OldObject);