Ответ 1
В основном в первом примере вы объявляете литерал объекта, который на самом деле уже является экземпляром объекта.
В вашем втором примере вы определяете функцию-конструктор, которая может использоваться с оператором new
для создания экземпляров объекта.
Литералы объектов могут также использоваться для создания новых экземпляров объектов и выполнения прототипного наследования, Дуглас Крокфорд также поддерживает эту технику.
В принципе, вы можете иметь оператор object
:
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
Эта вспомогательная функция может использоваться очень интуитивно понятным и удобным способом.
В основном он получает объект как параметр, внутри функции создается экземпляр нового объекта, старый объект привязан к прототипу нового объекта и возвращается.
Его можно использовать следующим образом:
var oldObject = {
firstMethod: function () { alert('first'); },
secondMethod: function () { alert('second'); },
};
var newObject = object(oldObject);
newObject.thirdMethod = function () { alert('third'); };
var otherObject = object(newObject);
otherObject.firstMethod();
Вы можете идти дальше, как хотите, создавая новые экземпляры из ранее определенных объектов.
Рекомендуем: