我正在努力学习 ExtJS 和面向对象的 JavaScript。我见过人们以多种方式在自定义命名空间中定义类。这两种方法有什么区别?
方法一
Ext.ns('myapp.cars');
(function(){
var Car = Ext.extend(Object, {
//...
})
myapp.cars.Car = Car;
})()
方法二
Ext.ns('myapp.cars');
myapp.cars.Car = Ext.extend(Object, {
//...
});
方法二更易读,需要的代码更少;有什么理由方法 1 更好吗?谢谢!
最佳答案
基本相同,只是第一种方法的自执行函数中可以使用私有(private)变量,而第二种方法中只能定义全局变量。
例如:
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 );
因此,如果您使用以后不会用到的大量变量,第一种方法非常有用。
关于javascript - ExtJS 3 : Two ways of creating custom class: what's the difference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119469/