Следующие значения практически эквивалентны:
var Car = Ext.extend(Object, {
//...
});
myapp.cars.Car = Car;
... и:
myapp.cars.Car = Ext.extend(Object, {
//...
});
В первом примере вы будете использовать временную переменную для хранения ссылки на вновь созданный объект, который затем копируется в myapp.cars.Car
(ссылка копируется, а не объект). Во втором примере вы бы присваивали ссылку на объект непосредственно myapp.cars.Car
.
Причина, по которой ваш первый пример был заключен в самовозглашающуюся анонимную функцию (function(){ })()
, заключается в ограничении области действия этой временной переменной. Обычно это делается для того, чтобы не загрязнять глобальное пространство имен этой переменной Car
. Если в другом месте определена другая переменная Car
, она не будет конфликтовать с этой. Пример:
var Car = "My Nice Car";
(function(){
var Car = Ext.extend(Object, {
//...
});
myapp.cars.Car = Car;
})();
alert(Car); // Still "My Nice Car"
// No conflict with the `Car` variable in the self invoking function.