Слишком поздно для этого потока ... но я думаю, что важное различие, которое необходимо сделать, состоит в том, что, хотя конструкторы являются просто функциями, новый оператор вызывает функцию и захватывает результирующий объект, который может быть полезен в динамической среде.Это позволяет ссылаться на свойства и методы во время выполнения конструктора, которые могут или не могут быть полезны в зависимости от ситуации.Если вас больше интересует наличие прототипа set, но сам объект более статичен, чем нет, то лучше будет использовать Object.create, так как он чище и не связывается с протоцепью неожиданными способами, как это делает новый оператор..
несколько простых примеров ..
var Foo = function(element) {
this.elem = element;
$(this.elem).css('color', 'blue');
// using the new operator here gives access to this.elem
// immediately after that declaration is made, thus providing
// a comfortable dynamic system to work with
}
var bar = new Foo(someElem);
применительно к ..
var foo = {
elem : element, // assume elem exists
$(this.elem).css('color', 'blue')// in the lexical scope
}
var bar = Object.create(foo);
// This.elem does not exist until the object is returned now
// and the .css method call will not execute
Должно быть немного яснее, почему вы хотите использовать один над другим, как еще одно простое расстройство ...
Используйте New, если вам нужно иметь динамический объект, а не цепочку прототипов
Используйте Object.create, когда вам меньше нужно быть динамичным и больше оимея явную цепочку прототипов.Я также отмечу, что объекты, созданные с помощью Object.create, также можно динамически создавать с помощью метода init
, который вы можете построить для назначения свойств в соответствии с вашими потребностями и просто вызвать его для только что возвращенного объекта.
У каждого подхода есть свои взлеты и падения, однако, на мой взгляд, их варианты использования довольно различны.Однако, скорее всего, вы обнаружите, что используете Object.create, так как в большинстве ситуаций требуется менее динамичная ситуация и больше требуется наследование.