javascript - ExtJS 3 : Two ways of creating custom class: what's the difference?

标签 javascript extjs extjs3

我正在努力学习 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/

相关文章:

javascript - 断言一个值恰好等于 undefined

extjs - 如何在 ExtJS 6 中禁用 Aria 可访问性警告

javascript - Ext JS 网格中的合并标题

javascript - Extjs:仅当另一个字段有值时才显示复选框

javascript - ExtJS 3.0 中更通用的面板加载掩码

javascript - extjs 3.x 设计选项卡面板的样式

javascript - 禁用特定元素的可拖动滚动功能?

javascript - 使用 AngularJS 的 Flickr 搜索,结果不会让我一直滚动到顶部

javascript - 如何使用RPG.JS

forms - 重用表单来显示数据