I'm trying to learn ExtJS and object-oriented JavaScript in general. I've seen people defining classes in custom namespaces in a couple of ways. What's the difference between these two methods?
Method 1
Ext.ns('myapp.cars');
(function(){
var Car = Ext.extend(Object, {
//...
})
myapp.cars.Car = Car;
})()
Method 2
Ext.ns('myapp.cars');
myapp.cars.Car = Ext.extend(Object, {
//...
});
Method 2 is easier to read and requires less code; is there any reason Method 1 is better? Thanks!
It's basically the same, except that you could use private variables in the self-exectuing function of the first method, while you can only define global variables in the second one.
For example:
Ext.ns('myapp.cars');
(function(){
var carInfo = {
goodEngine: true
};
var Car = Ext.extend(Object, {
info: carInfo
});
myapp.cars.Car = Car;
})()
// carInfo is undefined here, so this will give an error
alert( carInfo.goodEngine );
So, the first method is quite useful if you work with a bunge of variables that you won't use later on.